added the relation between models and space

This commit is contained in:
hannathkadher
2024-12-11 16:06:51 +04:00
parent 88a4b26919
commit 6d8c9a0ec0
8 changed files with 64 additions and 2 deletions

View File

@ -11,6 +11,7 @@ import { SpaceModelDto } from '../dtos';
import { SubspaceModelEntity } from './subspace-model.entity'; import { SubspaceModelEntity } from './subspace-model.entity';
import { SpaceProductModelEntity } from './space-product-model.entity'; import { SpaceProductModelEntity } from './space-product-model.entity';
import { ProjectEntity } from '../../project/entities'; import { ProjectEntity } from '../../project/entities';
import { SpaceEntity } from '../../space/entities';
@Entity({ name: 'space-model' }) @Entity({ name: 'space-model' })
@Unique(['modelName', 'project']) @Unique(['modelName', 'project'])
@ -53,4 +54,9 @@ export class SpaceModelEntity extends AbstractEntity<SpaceModelDto> {
}, },
) )
public spaceProductModels: SpaceProductModelEntity[]; public spaceProductModels: SpaceProductModelEntity[];
@OneToMany(() => SpaceEntity, (space) => space.spaceModel, {
cascade: true,
})
public spaces: SpaceEntity[];
} }

View File

@ -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 { AbstractEntity } from '../../abstract/entities/abstract.entity';
import { SpaceProductItemModelDto } from '../dtos'; import { SpaceProductItemModelDto } from '../dtos';
import { SpaceProductModelEntity } from './space-product-model.entity'; import { SpaceProductModelEntity } from './space-product-model.entity';
import { SpaceProductItemEntity } from '../../space/entities';
@Entity({ name: 'space-product-item-model' }) @Entity({ name: 'space-product-item-model' })
export class SpaceProductItemModelEntity extends AbstractEntity<SpaceProductItemModelDto> { export class SpaceProductItemModelEntity extends AbstractEntity<SpaceProductItemModelDto> {
@ -18,4 +19,11 @@ export class SpaceProductItemModelEntity extends AbstractEntity<SpaceProductItem
}, },
) )
public spaceProductModel: SpaceProductModelEntity; public spaceProductModel: SpaceProductModelEntity;
@OneToMany(
() => SpaceProductItemEntity,
(spaceProductItem) => spaceProductItem.spaceProductItemModel,
{ cascade: true },
)
public items: SpaceProductItemEntity[];
} }

View File

@ -4,6 +4,7 @@ import { ProductEntity } from '../../product/entities';
import { SpaceModelEntity } from './space-model.entity'; import { SpaceModelEntity } from './space-model.entity';
import { SpaceProductItemModelEntity } from './space-product-item.entity'; import { SpaceProductItemModelEntity } from './space-product-item.entity';
import { SpaceProductModelDto } from '../dtos'; import { SpaceProductModelDto } from '../dtos';
import { SpaceProductEntity } from '../../space/entities';
@Entity({ name: 'space-product-model' }) @Entity({ name: 'space-product-model' })
export class SpaceProductModelEntity extends AbstractEntity<SpaceProductModelDto> { export class SpaceProductModelEntity extends AbstractEntity<SpaceProductModelDto> {
@ -37,4 +38,13 @@ export class SpaceProductModelEntity extends AbstractEntity<SpaceProductModelDto
}, },
) )
public items: SpaceProductItemModelEntity[]; public items: SpaceProductItemModelEntity[];
@OneToMany(
() => SpaceProductEntity,
(spaceProduct) => spaceProduct.spaceProductModel,
{
cascade: true,
},
)
public spaceProducts: SpaceProductEntity[];
} }

View File

@ -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 { AbstractEntity } from '../../abstract/entities/abstract.entity';
import { SpaceModelEntity } from './space-model.entity'; import { SpaceModelEntity } from './space-model.entity';
import { SubSpaceModelDto } from '../dtos'; import { SubSpaceModelDto } from '../dtos';
import { SubspaceEntity } from '../../space/entities';
@Entity({ name: 'subspace-model' }) @Entity({ name: 'subspace-model' })
@Unique(['subspaceName', 'spaceModel']) @Unique(['subspaceName', 'spaceModel'])
@ -27,4 +28,9 @@ export class SubspaceModelEntity extends AbstractEntity<SubSpaceModelDto> {
}, },
) )
public spaceModel: SpaceModelEntity; public spaceModel: SpaceModelEntity;
@OneToMany(() => SubspaceEntity, (space) => space.subSpaceModel, {
cascade: true,
})
public spaces: SubspaceEntity[];
} }

View File

@ -2,6 +2,7 @@ import { Column, Entity, ManyToOne } from 'typeorm';
import { SpaceProductEntity } from './space-product.entity'; import { SpaceProductEntity } from './space-product.entity';
import { AbstractEntity } from '../../abstract/entities/abstract.entity'; import { AbstractEntity } from '../../abstract/entities/abstract.entity';
import { SpaceProductItemDto } from '../dtos'; import { SpaceProductItemDto } from '../dtos';
import { SpaceProductItemModelEntity } from '../../space-model';
@Entity({ name: 'space-product-item-model' }) @Entity({ name: 'space-product-item-model' })
export class SpaceProductItemEntity extends AbstractEntity<SpaceProductItemDto> { export class SpaceProductItemEntity extends AbstractEntity<SpaceProductItemDto> {
@ -14,4 +15,14 @@ export class SpaceProductItemEntity extends AbstractEntity<SpaceProductItemDto>
nullable: false, nullable: false,
}) })
public spaceProducts: SpaceProductEntity; public spaceProducts: SpaceProductEntity;
@ManyToOne(
() => SpaceProductItemModelEntity,
(spaceProductItemModel) => spaceProductItemModel.items,
{
nullable: true,
onDelete: 'SET NULL',
},
)
public spaceProductItemModel?: SpaceProductItemModelEntity;
} }

View File

@ -3,6 +3,7 @@ import { SpaceEntity } from './space.entity';
import { AbstractEntity } from '../../abstract/entities/abstract.entity'; import { AbstractEntity } from '../../abstract/entities/abstract.entity';
import { ProductEntity } from '../../product/entities'; import { ProductEntity } from '../../product/entities';
import { SpaceProductItemEntity } from './space-product-item.entity'; import { SpaceProductItemEntity } from './space-product-item.entity';
import { SpaceProductModelEntity } from '../../space-model';
@Entity({ name: 'space-product' }) @Entity({ name: 'space-product' })
export class SpaceProductEntity extends AbstractEntity<SpaceProductEntity> { export class SpaceProductEntity extends AbstractEntity<SpaceProductEntity> {
@ -31,6 +32,16 @@ export class SpaceProductEntity extends AbstractEntity<SpaceProductEntity> {
}) })
public items: SpaceProductItemEntity[]; public items: SpaceProductItemEntity[];
@ManyToOne(
() => SpaceProductModelEntity,
(spaceProductModel) => spaceProductModel.spaceProducts,
{
nullable: true,
},
)
@JoinColumn({ name: 'space_product_model_uuid' })
public spaceProductModel?: SpaceProductModelEntity;
constructor(partial: Partial<SpaceProductEntity>) { constructor(partial: Partial<SpaceProductEntity>) {
super(); super();
Object.assign(this, partial); Object.assign(this, partial);

View File

@ -15,6 +15,7 @@ import { SubspaceEntity } from './subspace.entity';
import { SpaceLinkEntity } from './space-link.entity'; import { SpaceLinkEntity } from './space-link.entity';
import { SpaceProductEntity } from './space-product.entity'; import { SpaceProductEntity } from './space-product.entity';
import { SceneEntity } from '../../scene/entities'; import { SceneEntity } from '../../scene/entities';
import { SpaceModelEntity } from '../../space-model';
@Entity({ name: 'space' }) @Entity({ name: 'space' })
@Unique(['invitationCode']) @Unique(['invitationCode'])
@ -98,6 +99,10 @@ export class SpaceEntity extends AbstractEntity<SpaceDto> {
@OneToMany(() => SceneEntity, (scene) => scene.space) @OneToMany(() => SceneEntity, (scene) => scene.space)
scenes: SceneEntity[]; scenes: SceneEntity[];
@ManyToOne(() => SpaceModelEntity, { nullable: true })
@JoinColumn({ name: 'space_model_uuid' })
spaceModel?: SpaceModelEntity;
constructor(partial: Partial<SpaceEntity>) { constructor(partial: Partial<SpaceEntity>) {
super(); super();
Object.assign(this, partial); Object.assign(this, partial);

View File

@ -3,6 +3,7 @@ import { AbstractEntity } from '../../abstract/entities/abstract.entity';
import { DeviceEntity } from '../../device/entities'; import { DeviceEntity } from '../../device/entities';
import { SpaceEntity } from './space.entity'; import { SpaceEntity } from './space.entity';
import { SubspaceDto } from '../dtos'; import { SubspaceDto } from '../dtos';
import { SubspaceModelEntity } from '../../space-model';
@Entity({ name: 'subspace' }) @Entity({ name: 'subspace' })
export class SubspaceEntity extends AbstractEntity<SubspaceDto> { export class SubspaceEntity extends AbstractEntity<SubspaceDto> {
@ -30,6 +31,10 @@ export class SubspaceEntity extends AbstractEntity<SubspaceDto> {
}) })
devices: DeviceEntity[]; devices: DeviceEntity[];
@ManyToOne(() => SubspaceModelEntity, { nullable: true })
@JoinColumn({ name: 'subspace_model_uuid' })
subSpaceModel?: SubspaceModelEntity;
constructor(partial: Partial<SubspaceEntity>) { constructor(partial: Partial<SubspaceEntity>) {
super(); super();
Object.assign(this, partial); Object.assign(this, partial);