import { Column, Entity, JoinTable, ManyToMany, ManyToOne, OneToMany } from 'typeorm'; import { BaseEntity } from '../base-entity'; import { Rateable } from './base/rateable'; 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 Rateable(BaseEntity) { @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; }