import { AfterLoad, Column, CreateDateColumn, DeleteDateColumn, Entity, ManyToMany, ManyToOne, PrimaryGeneratedColumn, UpdateDateColumn, } from 'typeorm'; import { Key } from './key.entity'; import { KeySystem } from './system.entity'; @Entity() export class Cylinder { @PrimaryGeneratedColumn('uuid') id: string; @Column({ nullable: false }) name: string; @Column({ name:'description', type: 'text', nullable: true }) description: string; @Column({name: 'is_digital', type: 'boolean', default: false}) isDigital: boolean; @ManyToMany(() => Key, (key) => key.cylinder, { onDelete: 'NO ACTION'}) keys: Key[]; @ManyToOne(() => KeySystem, (sys) => sys.cylinders) system: KeySystem; @CreateDateColumn({ name: 'created_at' }) createdAt: Date; @UpdateDateColumn({ name: 'updatet_at' }) updatedAt: Date; @DeleteDateColumn() deletedAt: Date; keyCount: number; @AfterLoad() countKeys() { if (this.keys) { this.keyCount = this.keys.length; } } }