import { Column, Entity, JoinTable, ManyToMany, ManyToOne, OneToMany, } from 'typeorm'; import { Base } from './bases/base'; import { Book } from './book'; import { CopyType } from './copy-type'; import { Language } from './language'; import { Source } from './source'; import { Translator } from './translator'; @Entity() export class Copy extends Base { @ManyToOne(() => Book, (book: Book) => book.copies, { nullable: false, onDelete: 'CASCADE', onUpdate: 'CASCADE', }) public original: Promise; @Column({ nullable: false, default: false }) public favorited: boolean; @OneToMany(() => CopyType, (copyType: CopyType) => copyType.copy, { nullable: false, onDelete: 'CASCADE', onUpdate: 'CASCADE', }) public types: Promise; @Column({ nullable: false }) public isDigital: boolean; @ManyToMany(() => Source, { nullable: false, onDelete: 'CASCADE', onUpdate: 'CASCADE', }) @JoinTable() public sources: Promise; @ManyToMany(() => Language, { nullable: true, onDelete: 'CASCADE', onUpdate: 'CASCADE', }) @JoinTable() public languages: Promise; @ManyToMany(() => Translator, { nullable: true, onDelete: 'CASCADE', onUpdate: 'CASCADE', }) @JoinTable() public translators: Promise; }