mirror of
https://github.com/SyncrowIOT/backend.git
synced 2025-07-17 03:05:13 +00:00
propagate delete subspace model
This commit is contained in:
@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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,
|
||||||
);
|
);
|
||||||
|
Reference in New Issue
Block a user