From 88602160d575c8ae63ca2fa3fb96fad6710903df Mon Sep 17 00:00:00 2001 From: Jeroen Akkerman Date: Sun, 8 Sep 2019 23:33:07 +0200 Subject: [PATCH] Create base for item model Ref #58 --- server/src/models/character.model.ts | 6 +++++- server/src/models/item.model.ts | 23 +++++++++++++++++++++++ 2 files changed, 28 insertions(+), 1 deletion(-) create mode 100644 server/src/models/item.model.ts diff --git a/server/src/models/character.model.ts b/server/src/models/character.model.ts index ba47b3d1..e73345cb 100644 --- a/server/src/models/character.model.ts +++ b/server/src/models/character.model.ts @@ -1,7 +1,8 @@ import * as clone from 'clone'; -import { Column, Entity, ManyToOne, SelectQueryBuilder } from 'typeorm'; +import { Column, Entity, ManyToOne, OneToMany, SelectQueryBuilder } from 'typeorm'; import { BaseModel } from './base.model'; +import { Item } from './item.model'; import { User } from './user.model'; @Entity() @@ -65,6 +66,9 @@ export class Character extends BaseModel { }) public user!: User; + @OneToMany(() => Item, (item) => item.character) + public items!: Item[]; + public get sanitizedCopy() { // Delete data that should not be sent to the client. const copy = clone(this); diff --git a/server/src/models/item.model.ts b/server/src/models/item.model.ts new file mode 100644 index 00000000..c37dd711 --- /dev/null +++ b/server/src/models/item.model.ts @@ -0,0 +1,23 @@ +import { Entity, ManyToOne, SelectQueryBuilder } from 'typeorm'; + +import { BaseModel } from './base.model'; +import { Character } from './character.model'; + +@Entity() +export class Item extends BaseModel { + + public static doQuery(): SelectQueryBuilder { + return this.createQueryBuilder('item'); + } + + public static getFromId(id: number) { + return Item.doQuery() + .where('item.id = :id', {id}) + .getOne(); + } + + @ManyToOne(() => Character, (character) => character.items, { + onDelete: 'CASCADE', + }) + public character!: Character; +}