import { WorkCharacter } from './work-character'; import { World } from './world'; import { WorldCharacterName } from './world-character-name'; import { Column, Entity, ManyToMany, OneToMany, PrimaryGeneratedColumn } from 'typeorm'; /** * This entity describes a canon character in a fictional world. */ @Entity() export class WorldCharacter implements IIdentifiableEntity, IMultiNamedEntity, IHierachicalEntity { @PrimaryGeneratedColumn() public id: number; @Column({ nullable: false, }) public nameCanonical: string; @OneToMany( () => WorldCharacterName, (worldCharacterName: WorldCharacterName) => worldCharacterName.entity ) public names: Promise; /** * the characters in works which are based on this one */ @ManyToMany( () => WorkCharacter, (workCharacter: WorkCharacter) => workCharacter.worldCharacters ) public workCharacters: Promise; /** * the fictional worlds this character is a part of */ @ManyToMany( () => World, (world: World) => world.worldCharacters ) public worlds: Promise; @ManyToMany( () => WorldCharacter, (worldCharacter: WorldCharacter) => worldCharacter.children ) public parents: Promise; @ManyToMany( () => WorldCharacter, (worldCharacter: WorldCharacter) => worldCharacter.parents ) public children: Promise; }