propagate delete subspace model

This commit is contained in:
hannathkadher
2024-12-19 15:48:10 +04:00
parent 5e089f76ac
commit 7f19073ed6
2 changed files with 52 additions and 25 deletions

View File

@ -7,7 +7,10 @@ import {
SubspaceProductRepository, SubspaceProductRepository,
SubspaceRepository, SubspaceRepository,
} from '@app/common/modules/space/repositories/subspace.repository'; } from '@app/common/modules/space/repositories/subspace.repository';
import { IUpdateSubspaceModelInterface } from '../interfaces'; import {
IDeletedSubsaceModelInterface,
IUpdateSubspaceModelInterface,
} from '../interfaces';
@CommandHandler(PropogateSubspaceCommand) @CommandHandler(PropogateSubspaceCommand)
export class PropogateSubspaceHandler export class PropogateSubspaceHandler
@ -26,6 +29,7 @@ export class PropogateSubspaceHandler
try { try {
const newSubspaceModels = command.param?.new; const newSubspaceModels = command.param?.new;
const updateSubspaceModels = command.param?.update; const updateSubspaceModels = command.param?.update;
const deleteSubspaceModels = command.param?.delete;
if (!newSubspaceModels && !updateSubspaceModels) { if (!newSubspaceModels && !updateSubspaceModels) {
this.logger.warn('No new or updated subspace models provided.'); this.logger.warn('No new or updated subspace models provided.');
@ -55,6 +59,10 @@ export class PropogateSubspaceHandler
if (updateSubspaceModels && updateSubspaceModels.length > 0) { if (updateSubspaceModels && updateSubspaceModels.length > 0) {
await this.updateSubspaces(updateSubspaceModels); await this.updateSubspaces(updateSubspaceModels);
} }
if (deleteSubspaceModels && deleteSubspaceModels.length > 0) {
await this.deleteSubspaces(deleteSubspaceModels);
}
} catch (error) { } catch (error) {
this.logger.error( this.logger.error(
'Error in PropogateSubspaceHandler execution', 'Error in PropogateSubspaceHandler execution',
@ -63,36 +71,55 @@ export class PropogateSubspaceHandler
} }
} }
private async updateSubspaces(models: IUpdateSubspaceModelInterface[]) { private async updateSubspaces(
models: IUpdateSubspaceModelInterface[],
): Promise<void> {
try { try {
for (const model of models) { const updatePromises = [];
try {
const subspaceModelUuid = model.uuid;
if (model.subspaceName) {
const subspaces = await this.subspaceRepository.find({
where: {
subSpaceModel: {
uuid: subspaceModelUuid,
},
},
});
if (subspaces.length > 0) { for (const model of models) {
await this.subspaceRepository.update(subspaces, { const { uuid: subspaceModelUuid, subspaceName } = model;
subspaceName: model.subspaceName,
}); if (subspaceName) {
} updatePromises.push(
} this.subspaceRepository
} catch (innerError) { .createQueryBuilder()
this.logger.error( .update()
`Error updating subspace model with UUID: ${model.uuid}`, .set({ subspaceName })
innerError.stack, .where('subSpaceModelUuid = :uuid', { uuid: subspaceModelUuid })
.execute(),
); );
} }
} }
await Promise.all(updatePromises);
} catch (error) { } catch (error) {
this.logger.error('Error in updateSubspaces method', error.stack); this.logger.error('Error in updateSubspaces method', error.stack);
throw new Error('Failed to update subspaces.'); }
}
private async deleteSubspaces(models: IDeletedSubsaceModelInterface[]) {
try {
const updatePromises = [];
for (const model of models) {
const { uuid: subspaceModelUuid } = model;
if (subspaceModelUuid) {
updatePromises.push(
this.subspaceRepository
.createQueryBuilder()
.update()
.set({ disabled: true })
.where('subSpaceModelUuid = :uuid', { uuid: subspaceModelUuid })
.execute(),
);
}
}
await Promise.all(updatePromises);
} catch (error) {
this.logger.error('Error in delete subspace models', error.stack);
} }
} }

View File

@ -47,7 +47,7 @@ export class SpaceProductModelService extends BaseProductModelService {
const savedModel = savedProductModels[index]; const savedModel = savedProductModels[index];
return this.spaceProductItemModelService.createProdutItemModel( return this.spaceProductItemModelService.createProdutItemModel(
dto.items, dto.items,
savedModel, // Pass the saved model savedModel,
spaceModel, spaceModel,
queryRunner, queryRunner,
); );