RenaiApp/src/main/entities/library/tag.ts

43 lines
1.3 KiB
TypeScript

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<TagNameEntityInterface[]>;
@OneToMany(() => WorkTag, (workTag: WorkTagEntityInterface) => workTag.tag)
public workTags!: Promise<WorkTagEntityInterface[]>;
@OneToMany(() => CharacterTag, (characterTag: CharacterTagEntityInterface) => characterTag.tag)
public characterTags!: Promise<CharacterTagEntityInterface[]>;
@OneToMany(() => InteractionTag, (interactionTag: InteractionTagEntityInterface) => interactionTag.tag)
public interactionTags!: Promise<InteractionTagEntityInterface[]>;
@ManyToMany(() => Tag, (tag: Tag) => tag.children)
@JoinTable()
public parents!: Promise<Tag[]>;
@ManyToMany(() => Tag, (tag: Tag) => tag.parents)
public children!: Promise<Tag[]>;
@Column({
nullable: false,
default: '',
})
public description!: string;
}