import { AbstractEntity } from '@app/common/modules/abstract/entities/abstract.entity'; import { Column, Entity, ManyToOne, OneToMany, Unique } from 'typeorm'; import { SubSpaceModelDto } from '../../dtos'; import { SpaceModelEntity } from '../space-model.entity'; import { SubspaceEntity } from '@app/common/modules/space/entities'; import { SubspaceProductModelEntity } from './subspace-product-model.entity'; @Entity({ name: 'subspace-model' }) @Unique(['subspaceName', 'spaceModel']) export class SubspaceModelEntity extends AbstractEntity { @Column({ type: 'uuid', default: () => 'gen_random_uuid()', nullable: false, }) public uuid: string; @Column({ nullable: false, }) public subspaceName: string; @ManyToOne( () => SpaceModelEntity, (spaceModel) => spaceModel.subspaceModels, { nullable: false, onDelete: 'CASCADE', }, ) public spaceModel: SpaceModelEntity; @OneToMany(() => SubspaceEntity, (space) => space.subSpaceModel, { cascade: true, }) public spaces: SubspaceEntity[]; @OneToMany( () => SubspaceProductModelEntity, (productModel) => productModel.subspaceModel, { nullable: true, }, ) public productModels: SubspaceProductModelEntity[]; }