From 6d8c9a0ec021e49fa1989ae3ea39717e1c1a3fa2 Mon Sep 17 00:00:00 2001 From: hannathkadher Date: Wed, 11 Dec 2024 16:06:51 +0400 Subject: [PATCH] added the relation between models and space --- .../space-model/entities/space-model.entity.ts | 6 ++++++ .../space-model/entities/space-product-item.entity.ts | 10 +++++++++- .../entities/space-product-model.entity.ts | 10 ++++++++++ .../space-model/entities/subspace-model.entity.ts | 8 +++++++- .../space/entities/space-product-item.entity.ts | 11 +++++++++++ .../modules/space/entities/space-product.entity.ts | 11 +++++++++++ .../common/src/modules/space/entities/space.entity.ts | 5 +++++ .../src/modules/space/entities/subspace.entity.ts | 5 +++++ 8 files changed, 64 insertions(+), 2 deletions(-) diff --git a/libs/common/src/modules/space-model/entities/space-model.entity.ts b/libs/common/src/modules/space-model/entities/space-model.entity.ts index 9937a01..b67c642 100644 --- a/libs/common/src/modules/space-model/entities/space-model.entity.ts +++ b/libs/common/src/modules/space-model/entities/space-model.entity.ts @@ -11,6 +11,7 @@ import { SpaceModelDto } from '../dtos'; import { SubspaceModelEntity } from './subspace-model.entity'; import { SpaceProductModelEntity } from './space-product-model.entity'; import { ProjectEntity } from '../../project/entities'; +import { SpaceEntity } from '../../space/entities'; @Entity({ name: 'space-model' }) @Unique(['modelName', 'project']) @@ -53,4 +54,9 @@ export class SpaceModelEntity extends AbstractEntity { }, ) public spaceProductModels: SpaceProductModelEntity[]; + + @OneToMany(() => SpaceEntity, (space) => space.spaceModel, { + cascade: true, + }) + public spaces: SpaceEntity[]; } diff --git a/libs/common/src/modules/space-model/entities/space-product-item.entity.ts b/libs/common/src/modules/space-model/entities/space-product-item.entity.ts index 7d39974..062418f 100644 --- a/libs/common/src/modules/space-model/entities/space-product-item.entity.ts +++ b/libs/common/src/modules/space-model/entities/space-product-item.entity.ts @@ -1,7 +1,8 @@ -import { Entity, Column, ManyToOne } from 'typeorm'; +import { Entity, Column, ManyToOne, OneToMany } from 'typeorm'; import { AbstractEntity } from '../../abstract/entities/abstract.entity'; import { SpaceProductItemModelDto } from '../dtos'; import { SpaceProductModelEntity } from './space-product-model.entity'; +import { SpaceProductItemEntity } from '../../space/entities'; @Entity({ name: 'space-product-item-model' }) export class SpaceProductItemModelEntity extends AbstractEntity { @@ -18,4 +19,11 @@ export class SpaceProductItemModelEntity extends AbstractEntity SpaceProductItemEntity, + (spaceProductItem) => spaceProductItem.spaceProductItemModel, + { cascade: true }, + ) + public items: SpaceProductItemEntity[]; } diff --git a/libs/common/src/modules/space-model/entities/space-product-model.entity.ts b/libs/common/src/modules/space-model/entities/space-product-model.entity.ts index d843d07..c48cf91 100644 --- a/libs/common/src/modules/space-model/entities/space-product-model.entity.ts +++ b/libs/common/src/modules/space-model/entities/space-product-model.entity.ts @@ -4,6 +4,7 @@ import { ProductEntity } from '../../product/entities'; import { SpaceModelEntity } from './space-model.entity'; import { SpaceProductItemModelEntity } from './space-product-item.entity'; import { SpaceProductModelDto } from '../dtos'; +import { SpaceProductEntity } from '../../space/entities'; @Entity({ name: 'space-product-model' }) export class SpaceProductModelEntity extends AbstractEntity { @@ -37,4 +38,13 @@ export class SpaceProductModelEntity extends AbstractEntity SpaceProductEntity, + (spaceProduct) => spaceProduct.spaceProductModel, + { + cascade: true, + }, + ) + public spaceProducts: SpaceProductEntity[]; } diff --git a/libs/common/src/modules/space-model/entities/subspace-model.entity.ts b/libs/common/src/modules/space-model/entities/subspace-model.entity.ts index 776f831..c1e335a 100644 --- a/libs/common/src/modules/space-model/entities/subspace-model.entity.ts +++ b/libs/common/src/modules/space-model/entities/subspace-model.entity.ts @@ -1,7 +1,8 @@ -import { Column, Entity, ManyToOne, Unique } from 'typeorm'; +import { Column, Entity, ManyToOne, OneToMany, Unique } from 'typeorm'; import { AbstractEntity } from '../../abstract/entities/abstract.entity'; import { SpaceModelEntity } from './space-model.entity'; import { SubSpaceModelDto } from '../dtos'; +import { SubspaceEntity } from '../../space/entities'; @Entity({ name: 'subspace-model' }) @Unique(['subspaceName', 'spaceModel']) @@ -27,4 +28,9 @@ export class SubspaceModelEntity extends AbstractEntity { }, ) public spaceModel: SpaceModelEntity; + + @OneToMany(() => SubspaceEntity, (space) => space.subSpaceModel, { + cascade: true, + }) + public spaces: SubspaceEntity[]; } diff --git a/libs/common/src/modules/space/entities/space-product-item.entity.ts b/libs/common/src/modules/space/entities/space-product-item.entity.ts index d45cfa0..7c6260f 100644 --- a/libs/common/src/modules/space/entities/space-product-item.entity.ts +++ b/libs/common/src/modules/space/entities/space-product-item.entity.ts @@ -2,6 +2,7 @@ import { Column, Entity, ManyToOne } from 'typeorm'; import { SpaceProductEntity } from './space-product.entity'; import { AbstractEntity } from '../../abstract/entities/abstract.entity'; import { SpaceProductItemDto } from '../dtos'; +import { SpaceProductItemModelEntity } from '../../space-model'; @Entity({ name: 'space-product-item-model' }) export class SpaceProductItemEntity extends AbstractEntity { @@ -14,4 +15,14 @@ export class SpaceProductItemEntity extends AbstractEntity nullable: false, }) public spaceProducts: SpaceProductEntity; + + @ManyToOne( + () => SpaceProductItemModelEntity, + (spaceProductItemModel) => spaceProductItemModel.items, + { + nullable: true, + onDelete: 'SET NULL', + }, + ) + public spaceProductItemModel?: SpaceProductItemModelEntity; } diff --git a/libs/common/src/modules/space/entities/space-product.entity.ts b/libs/common/src/modules/space/entities/space-product.entity.ts index 244a860..8fa0c4f 100644 --- a/libs/common/src/modules/space/entities/space-product.entity.ts +++ b/libs/common/src/modules/space/entities/space-product.entity.ts @@ -3,6 +3,7 @@ import { SpaceEntity } from './space.entity'; import { AbstractEntity } from '../../abstract/entities/abstract.entity'; import { ProductEntity } from '../../product/entities'; import { SpaceProductItemEntity } from './space-product-item.entity'; +import { SpaceProductModelEntity } from '../../space-model'; @Entity({ name: 'space-product' }) export class SpaceProductEntity extends AbstractEntity { @@ -31,6 +32,16 @@ export class SpaceProductEntity extends AbstractEntity { }) public items: SpaceProductItemEntity[]; + @ManyToOne( + () => SpaceProductModelEntity, + (spaceProductModel) => spaceProductModel.spaceProducts, + { + nullable: true, + }, + ) + @JoinColumn({ name: 'space_product_model_uuid' }) + public spaceProductModel?: SpaceProductModelEntity; + constructor(partial: Partial) { super(); Object.assign(this, partial); diff --git a/libs/common/src/modules/space/entities/space.entity.ts b/libs/common/src/modules/space/entities/space.entity.ts index 103f0a2..9d6e6fd 100644 --- a/libs/common/src/modules/space/entities/space.entity.ts +++ b/libs/common/src/modules/space/entities/space.entity.ts @@ -15,6 +15,7 @@ import { SubspaceEntity } from './subspace.entity'; import { SpaceLinkEntity } from './space-link.entity'; import { SpaceProductEntity } from './space-product.entity'; import { SceneEntity } from '../../scene/entities'; +import { SpaceModelEntity } from '../../space-model'; @Entity({ name: 'space' }) @Unique(['invitationCode']) @@ -98,6 +99,10 @@ export class SpaceEntity extends AbstractEntity { @OneToMany(() => SceneEntity, (scene) => scene.space) scenes: SceneEntity[]; + @ManyToOne(() => SpaceModelEntity, { nullable: true }) + @JoinColumn({ name: 'space_model_uuid' }) + spaceModel?: SpaceModelEntity; + constructor(partial: Partial) { super(); Object.assign(this, partial); diff --git a/libs/common/src/modules/space/entities/subspace.entity.ts b/libs/common/src/modules/space/entities/subspace.entity.ts index ab38b00..ccb5118 100644 --- a/libs/common/src/modules/space/entities/subspace.entity.ts +++ b/libs/common/src/modules/space/entities/subspace.entity.ts @@ -3,6 +3,7 @@ import { AbstractEntity } from '../../abstract/entities/abstract.entity'; import { DeviceEntity } from '../../device/entities'; import { SpaceEntity } from './space.entity'; import { SubspaceDto } from '../dtos'; +import { SubspaceModelEntity } from '../../space-model'; @Entity({ name: 'subspace' }) export class SubspaceEntity extends AbstractEntity { @@ -30,6 +31,10 @@ export class SubspaceEntity extends AbstractEntity { }) devices: DeviceEntity[]; + @ManyToOne(() => SubspaceModelEntity, { nullable: true }) + @JoinColumn({ name: 'subspace_model_uuid' }) + subSpaceModel?: SubspaceModelEntity; + constructor(partial: Partial) { super(); Object.assign(this, partial);