import { Column, Entity, JoinTable, ManyToMany, OneToMany, PrimaryGeneratedColumn } from 'typeorm'; import { CharacterTag } from './character-tag'; import { InteractionTag } from './interaction-tag'; import { TagName } from './tag-name'; import { WorkTag } from './work-tag'; @Entity() export class Tag implements TagEntityInterface { @PrimaryGeneratedColumn() public readonly id!: number; @Column({ nullable: false, default: '', }) public nameCanonical!: string; @OneToMany(() => TagName, (tagName: TagNameEntityInterface) => tagName.entity) public names!: Promise; @OneToMany(() => WorkTag, (workTag: WorkTagEntityInterface) => workTag.tag) public workTags!: Promise; @OneToMany(() => CharacterTag, (characterTag: CharacterTagEntityInterface) => characterTag.tag) public characterTags!: Promise; @OneToMany(() => InteractionTag, (interactionTag: InteractionTagEntityInterface) => interactionTag.tag) public interactionTags!: Promise; @ManyToMany(() => Tag, (tag: Tag) => tag.children) @JoinTable() public parents!: Promise; @ManyToMany(() => Tag, (tag: Tag) => tag.parents) public children!: Promise; @Column({ nullable: false, default: '', }) public description!: string; }