mirror of
https://github.com/SyncrowIOT/backend.git
synced 2025-07-16 02:36:19 +00:00
propagate delete subspace model
This commit is contained in:
@ -7,7 +7,10 @@ import {
|
||||
SubspaceProductRepository,
|
||||
SubspaceRepository,
|
||||
} from '@app/common/modules/space/repositories/subspace.repository';
|
||||
import { IUpdateSubspaceModelInterface } from '../interfaces';
|
||||
import {
|
||||
IDeletedSubsaceModelInterface,
|
||||
IUpdateSubspaceModelInterface,
|
||||
} from '../interfaces';
|
||||
|
||||
@CommandHandler(PropogateSubspaceCommand)
|
||||
export class PropogateSubspaceHandler
|
||||
@ -26,6 +29,7 @@ export class PropogateSubspaceHandler
|
||||
try {
|
||||
const newSubspaceModels = command.param?.new;
|
||||
const updateSubspaceModels = command.param?.update;
|
||||
const deleteSubspaceModels = command.param?.delete;
|
||||
|
||||
if (!newSubspaceModels && !updateSubspaceModels) {
|
||||
this.logger.warn('No new or updated subspace models provided.');
|
||||
@ -55,6 +59,10 @@ export class PropogateSubspaceHandler
|
||||
if (updateSubspaceModels && updateSubspaceModels.length > 0) {
|
||||
await this.updateSubspaces(updateSubspaceModels);
|
||||
}
|
||||
|
||||
if (deleteSubspaceModels && deleteSubspaceModels.length > 0) {
|
||||
await this.deleteSubspaces(deleteSubspaceModels);
|
||||
}
|
||||
} catch (error) {
|
||||
this.logger.error(
|
||||
'Error in PropogateSubspaceHandler execution',
|
||||
@ -63,36 +71,55 @@ export class PropogateSubspaceHandler
|
||||
}
|
||||
}
|
||||
|
||||
private async updateSubspaces(models: IUpdateSubspaceModelInterface[]) {
|
||||
private async updateSubspaces(
|
||||
models: IUpdateSubspaceModelInterface[],
|
||||
): Promise<void> {
|
||||
try {
|
||||
for (const model of models) {
|
||||
try {
|
||||
const subspaceModelUuid = model.uuid;
|
||||
if (model.subspaceName) {
|
||||
const subspaces = await this.subspaceRepository.find({
|
||||
where: {
|
||||
subSpaceModel: {
|
||||
uuid: subspaceModelUuid,
|
||||
},
|
||||
},
|
||||
});
|
||||
const updatePromises = [];
|
||||
|
||||
if (subspaces.length > 0) {
|
||||
await this.subspaceRepository.update(subspaces, {
|
||||
subspaceName: model.subspaceName,
|
||||
});
|
||||
}
|
||||
}
|
||||
} catch (innerError) {
|
||||
this.logger.error(
|
||||
`Error updating subspace model with UUID: ${model.uuid}`,
|
||||
innerError.stack,
|
||||
for (const model of models) {
|
||||
const { uuid: subspaceModelUuid, subspaceName } = model;
|
||||
|
||||
if (subspaceName) {
|
||||
updatePromises.push(
|
||||
this.subspaceRepository
|
||||
.createQueryBuilder()
|
||||
.update()
|
||||
.set({ subspaceName })
|
||||
.where('subSpaceModelUuid = :uuid', { uuid: subspaceModelUuid })
|
||||
.execute(),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
await Promise.all(updatePromises);
|
||||
} catch (error) {
|
||||
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];
|
||||
return this.spaceProductItemModelService.createProdutItemModel(
|
||||
dto.items,
|
||||
savedModel, // Pass the saved model
|
||||
savedModel,
|
||||
spaceModel,
|
||||
queryRunner,
|
||||
);
|
||||
|
Reference in New Issue
Block a user