From d1a976d152701fc55926008f3c94b50fd002015b Mon Sep 17 00:00:00 2001 From: hannathkadher Date: Mon, 10 Mar 2025 10:57:27 +0400 Subject: [PATCH] removed old tags --- src/space-model/commands/index.ts | 2 +- ...ropagate-subspace-model-update-command.ts} | 8 +- .../handlers/propate-subspace-handler.ts | 97 ++++--------------- .../space-model-product-allocation.service.ts | 8 -- .../services/space-model.service.ts | 14 ++- .../subspace/subspace-model.service.ts | 8 +- .../subspace/subspace-device.service.ts | 38 -------- 7 files changed, 42 insertions(+), 133 deletions(-) rename src/space-model/commands/{propogate-subspace-update-command.ts => propagate-subspace-model-update-command.ts} (56%) diff --git a/src/space-model/commands/index.ts b/src/space-model/commands/index.ts index da760ea..4a7aafa 100644 --- a/src/space-model/commands/index.ts +++ b/src/space-model/commands/index.ts @@ -1,2 +1,2 @@ -export * from './propogate-subspace-update-command'; export * from './propagate-space-model-deletion.command'; +export * from './propagate-subspace-model-update-command'; diff --git a/src/space-model/commands/propogate-subspace-update-command.ts b/src/space-model/commands/propagate-subspace-model-update-command.ts similarity index 56% rename from src/space-model/commands/propogate-subspace-update-command.ts rename to src/space-model/commands/propagate-subspace-model-update-command.ts index a2b5203..ff437e4 100644 --- a/src/space-model/commands/propogate-subspace-update-command.ts +++ b/src/space-model/commands/propagate-subspace-model-update-command.ts @@ -1,14 +1,14 @@ import { ICommand } from '@nestjs/cqrs'; import { SpaceModelEntity } from '@app/common/modules/space-model'; -import { ModifyspaceModelPayload } from '../interfaces'; -import { QueryRunner } from 'typeorm'; +import { ISingleSubspaceModel } from '../interfaces'; +import { SpaceEntity } from '@app/common/modules/space/entities/space.entity'; export class PropogateUpdateSpaceModelCommand implements ICommand { constructor( public readonly param: { spaceModel: SpaceModelEntity; - modifiedSpaceModels: ModifyspaceModelPayload; - queryRunner: QueryRunner; + subspaceModels: ISingleSubspaceModel[]; + spaces: SpaceEntity[]; }, ) {} } diff --git a/src/space-model/handlers/propate-subspace-handler.ts b/src/space-model/handlers/propate-subspace-handler.ts index 36936ff..2bef42a 100644 --- a/src/space-model/handlers/propate-subspace-handler.ts +++ b/src/space-model/handlers/propate-subspace-handler.ts @@ -2,18 +2,16 @@ import { CommandHandler, ICommandHandler } from '@nestjs/cqrs'; import { PropogateUpdateSpaceModelCommand } from '../commands'; import { SpaceRepository } from '@app/common/modules/space'; import { SubspaceRepository } from '@app/common/modules/space/repositories/subspace.repository'; -import { - SpaceModelEntity, - SubspaceModelEntity, - TagModel, -} from '@app/common/modules/space-model'; +import { SpaceModelEntity, TagModel } from '@app/common/modules/space-model'; import { DataSource, QueryRunner } from 'typeorm'; import { SubSpaceService } from 'src/space/services'; import { TagService } from 'src/space/services/tag'; -import { UpdatedSubspaceModelPayload } from '../interfaces'; -import { ModifyAction } from '@app/common/constants/modify-action.enum'; -import { ModifySubspaceDto } from 'src/space/dtos'; +import { + ISingleSubspaceModel, + UpdatedSubspaceModelPayload, +} from '../interfaces'; import { SpaceEntity } from '@app/common/modules/space/entities/space.entity'; +import { ModifyAction } from '@app/common/constants/modify-action.enum'; @CommandHandler(PropogateUpdateSpaceModelCommand) export class PropogateUpdateSpaceModelHandler @@ -28,86 +26,27 @@ export class PropogateUpdateSpaceModelHandler ) {} async execute(command: PropogateUpdateSpaceModelCommand): Promise { - const { spaceModel, modifiedSpaceModels, queryRunner } = command.param; + console.log("propagate"); + const { spaceModel, subspaceModels, spaces } = command.param; - try { - const spaces = await queryRunner.manager.find(SpaceEntity, { - where: { spaceModel }, - }); + if (!subspaceModels || subspaceModels.length === 0) return; - const { modifiedSubspaceModels = {}, modifiedTags = {} } = - modifiedSpaceModels; + if (!spaces) { + return; + } - const { - addedSubspaceModels = [], - updatedSubspaceModels = [], - deletedSubspaceModels = [], - } = modifiedSubspaceModels; - - const { added = [], updated = [], deleted = [] } = modifiedTags; - - if (addedSubspaceModels.length > 0) { - await this.addSubspaceModels( - modifiedSpaceModels.modifiedSubspaceModels.addedSubspaceModels, - spaces, - queryRunner, - ); - } else if (updatedSubspaceModels.length > 0) { - await this.updateSubspaceModels( - modifiedSpaceModels.modifiedSubspaceModels.updatedSubspaceModels, - queryRunner, - ); + for (const subspaceModel of subspaceModels) { + if (subspaceModel.action === ModifyAction.ADD) { + await this.addSubspaceModel(subspaceModel, spaces); } - if (deletedSubspaceModels.length > 0) { - const dtos: ModifySubspaceDto[] = - modifiedSpaceModels.modifiedSubspaceModels.deletedSubspaceModels.map( - (model) => ({ - action: ModifyAction.DELETE, - uuid: model, - }), - ); - await this.subSpaceService.modifySubSpace(dtos, queryRunner); - } - - if (added.length > 0) { - await this.createTags( - modifiedSpaceModels.modifiedTags.added, - queryRunner, - null, - spaceModel, - ); - } - - if (updated.length > 0) { - await this.updateTags( - modifiedSpaceModels.modifiedTags.updated, - queryRunner, - ); - } - - if (deleted.length > 0) { - await this.deleteTags( - modifiedSpaceModels.modifiedTags.deleted, - queryRunner, - ); - } - } catch (error) { - console.error(error); } } - async addSubspaceModels( - subspaceModels: SubspaceModelEntity[], + async addSubspaceModel( + subspaceModel: ISingleSubspaceModel, spaces: SpaceEntity[], - queryRunner: QueryRunner, ) { - for (const space of spaces) { - await this.subSpaceService.createSubSpaceFromModel( - subspaceModels, - [space], - queryRunner, - ); - } + console.log(`subspace is ${JSON.stringify(subspaceModel)}`); } async updateSubspaceModels( diff --git a/src/space-model/services/space-model-product-allocation.service.ts b/src/space-model/services/space-model-product-allocation.service.ts index 07a84e5..6a477bf 100644 --- a/src/space-model/services/space-model-product-allocation.service.ts +++ b/src/space-model/services/space-model-product-allocation.service.ts @@ -365,14 +365,6 @@ export class SpaceModelProductAllocationService { ); } - await this.spaceProductAllocationService.propagateDeleteToInheritedAllocations( - queryRunner, - allocationsToUpdate, - tagUuidsToDelete, - project, - spaces, - ); - await queryRunner.manager .createQueryBuilder() .delete() diff --git a/src/space-model/services/space-model.service.ts b/src/space-model/services/space-model.service.ts index 01dea08..e15c4aa 100644 --- a/src/space-model/services/space-model.service.ts +++ b/src/space-model/services/space-model.service.ts @@ -25,7 +25,10 @@ import { BaseResponseDto } from '@app/common/dto/base.response.dto'; import { CommandBus } from '@nestjs/cqrs'; import { ProcessTagDto } from 'src/tags/dtos'; import { SpaceModelProductAllocationService } from './space-model-product-allocation.service'; -import { PropogateDeleteSpaceModelCommand } from '../commands'; +import { + PropogateDeleteSpaceModelCommand, + PropogateUpdateSpaceModelCommand, +} from '../commands'; import { SpaceProductAllocationRepository, SpaceRepository, @@ -44,7 +47,6 @@ import { SpaceProductAllocationEntity } from '@app/common/modules/space/entities import { SubspaceEntity } from '@app/common/modules/space/entities/subspace/subspace.entity'; import { SubspaceProductAllocationEntity } from '@app/common/modules/space/entities/subspace/subspace-product-allocation.entity'; import { DeviceEntity } from '@app/common/modules/device/entities'; -import { ISingleSubspace } from 'src/space/interfaces/single-subspace.interface'; import { ISingleSubspaceModel } from '../interfaces'; @Injectable() @@ -239,6 +241,14 @@ export class SpaceModelService { } await queryRunner.commitTransaction(); + await this.commandBus.execute( + new PropogateUpdateSpaceModelCommand({ + spaceModel: spaceModel, + subspaceModels: modifiedSubspaces, + spaces: spaces, + }), + ); + return new SuccessResponseDto({ message: 'SpaceModel updated successfully', }); diff --git a/src/space-model/services/subspace/subspace-model.service.ts b/src/space-model/services/subspace/subspace-model.service.ts index 5f65644..da15ac4 100644 --- a/src/space-model/services/subspace/subspace-model.service.ts +++ b/src/space-model/services/subspace/subspace-model.service.ts @@ -155,7 +155,13 @@ export class SubSpaceModelService { queryRunner, spaceModel, ); - return [...createdSubspaces, ...updatedSubspaces, ...deletedSubspaces]; + return [ + createdSubspaces ?? [], + updatedSubspaces ?? [], + deletedSubspaces ?? [], + ] + .filter((arr) => arr.length > 0) + .flat(); } catch (error) { console.error('Error in modifySubspaceModels:', error); throw new HttpException( diff --git a/src/space/services/subspace/subspace-device.service.ts b/src/space/services/subspace/subspace-device.service.ts index 8fc062c..04e998e 100644 --- a/src/space/services/subspace/subspace-device.service.ts +++ b/src/space/services/subspace/subspace-device.service.ts @@ -81,24 +81,6 @@ export class SubspaceDeviceService { const subspace = await this.findSubspace(subSpaceUuid); const device = await this.findDevice(deviceUuid); - if (device.tag?.subspace?.uuid !== subspace.uuid) { - await this.tagRepository.update( - { uuid: device.tag.uuid }, - { subspace, space: null }, - ); - } - - if (!device.tag) { - const tag = this.tagRepository.create({ - tag: `Tag ${this.findNextTag()}`, - product: device.productDevice, - subspace: subspace, - device: device, - }); - await this.tagRepository.save(tag); - device.tag = tag; - } - device.subspace = subspace; const newDevice = await this.deviceRepository.save(device); @@ -140,26 +122,6 @@ export class SubspaceDeviceService { ); } - if (device.tag?.subspace !== null) { - await this.tagRepository.update( - { uuid: device.tag.uuid }, - { subspace: null, space: device.spaceDevice }, - ); - } - - if (!device.tag) { - const tag = this.tagRepository.create({ - tag: `Tag ${this.findNextTag()}`, - product: device.productDevice, - subspace: null, - space: device.spaceDevice, - device: device, - }); - - await this.tagRepository.save(tag); - device.tag = tag; - } - device.subspace = null; const updatedDevice = await this.deviceRepository.save(device);