mirror of
https://github.com/SyncrowIOT/backend.git
synced 2025-07-17 03:05:13 +00:00
for now
This commit is contained in:
@ -7,6 +7,7 @@ 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';
|
||||||
|
|
||||||
@CommandHandler(PropogateSubspaceCommand)
|
@CommandHandler(PropogateSubspaceCommand)
|
||||||
export class PropogateSubspaceHandler
|
export class PropogateSubspaceHandler
|
||||||
@ -24,14 +25,14 @@ export class PropogateSubspaceHandler
|
|||||||
async execute(command: PropogateSubspaceCommand): Promise<void> {
|
async execute(command: PropogateSubspaceCommand): Promise<void> {
|
||||||
try {
|
try {
|
||||||
const newSubspaceModels = command.param?.new;
|
const newSubspaceModels = command.param?.new;
|
||||||
|
const updateSubspaceModels = command.param?.update;
|
||||||
|
|
||||||
if (!newSubspaceModels || newSubspaceModels.length === 0) {
|
if (!newSubspaceModels && !updateSubspaceModels) {
|
||||||
this.logger.warn('No new subspace models provided.');
|
this.logger.warn('No new or updated subspace models provided.');
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
const spaceModelUuid =
|
const spaceModelUuid = command.param.spaceModelUuid;
|
||||||
newSubspaceModels[0]?.subspaceModel?.spaceModel?.uuid;
|
|
||||||
|
|
||||||
if (!spaceModelUuid) {
|
if (!spaceModelUuid) {
|
||||||
this.logger.error(
|
this.logger.error(
|
||||||
@ -47,7 +48,13 @@ export class PropogateSubspaceHandler
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
await this.processSubspaces(newSubspaceModels, spaces);
|
if (newSubspaceModels && newSubspaceModels.length > 0) {
|
||||||
|
await this.processNewSubspaces(newSubspaceModels, spaces);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (updateSubspaceModels && updateSubspaceModels.length > 0) {
|
||||||
|
await this.updateSubspaces(updateSubspaceModels);
|
||||||
|
}
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
this.logger.error(
|
this.logger.error(
|
||||||
'Error in PropogateSubspaceHandler execution',
|
'Error in PropogateSubspaceHandler execution',
|
||||||
@ -56,7 +63,40 @@ export class PropogateSubspaceHandler
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private async processSubspaces(
|
private async updateSubspaces(models: IUpdateSubspaceModelInterface[]) {
|
||||||
|
try {
|
||||||
|
for (const model of models) {
|
||||||
|
try {
|
||||||
|
const subspaceModelUuid = model.uuid;
|
||||||
|
if (model.subspaceName) {
|
||||||
|
const subspaces = await this.subspaceRepository.find({
|
||||||
|
where: {
|
||||||
|
subSpaceModel: {
|
||||||
|
uuid: subspaceModelUuid,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
|
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,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} catch (error) {
|
||||||
|
this.logger.error('Error in updateSubspaces method', error.stack);
|
||||||
|
throw new Error('Failed to update subspaces.');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private async processNewSubspaces(
|
||||||
newSubspaceModels: any[],
|
newSubspaceModels: any[],
|
||||||
spaces: SpaceEntity[],
|
spaces: SpaceEntity[],
|
||||||
) {
|
) {
|
||||||
|
@ -15,6 +15,7 @@ export interface ProductModelInterface {
|
|||||||
}
|
}
|
||||||
|
|
||||||
export interface IModifySubspaceModelInterface {
|
export interface IModifySubspaceModelInterface {
|
||||||
|
spaceModelUuid: string;
|
||||||
new?: AddSubspaceModelInterface[];
|
new?: AddSubspaceModelInterface[];
|
||||||
update?: IUpdateSubspaceModelInterface[];
|
update?: IUpdateSubspaceModelInterface[];
|
||||||
delete?: IDeletedSubsaceModelInterface[];
|
delete?: IDeletedSubsaceModelInterface[];
|
||||||
|
@ -75,9 +75,8 @@ export class SubSpaceModelService {
|
|||||||
queryRunner: QueryRunner,
|
queryRunner: QueryRunner,
|
||||||
) {
|
) {
|
||||||
const updateResults: IUpdateSubspaceModelInterface[] = [];
|
const updateResults: IUpdateSubspaceModelInterface[] = [];
|
||||||
|
try {
|
||||||
for (const dto of updateDtos) {
|
for (const dto of updateDtos) {
|
||||||
try {
|
|
||||||
const subspaceModel = await this.findOne(dto.subspaceUuid);
|
const subspaceModel = await this.findOne(dto.subspaceUuid);
|
||||||
const updateResult: IUpdateSubspaceModelInterface = {
|
const updateResult: IUpdateSubspaceModelInterface = {
|
||||||
uuid: dto.subspaceUuid,
|
uuid: dto.subspaceUuid,
|
||||||
@ -94,14 +93,18 @@ export class SubSpaceModelService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
updateResults.push(updateResult);
|
updateResults.push(updateResult);
|
||||||
} catch (error) {
|
|
||||||
console.error(
|
|
||||||
`SubspaceModel with ${dto.subspaceUuid} not able to update ${error}`,
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
return updateResults;
|
return updateResults;
|
||||||
|
} catch (error) {
|
||||||
|
if (error instanceof HttpException) {
|
||||||
|
throw error;
|
||||||
|
}
|
||||||
|
throw new HttpException(
|
||||||
|
error.message || 'Failed to update SpaceModels',
|
||||||
|
HttpStatus.INTERNAL_SERVER_ERROR,
|
||||||
|
);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
async deleteSubspaceModels(
|
async deleteSubspaceModels(
|
||||||
@ -179,7 +182,9 @@ export class SubSpaceModelService {
|
|||||||
spaceModel: SpaceModelEntity,
|
spaceModel: SpaceModelEntity,
|
||||||
queryRunner: QueryRunner,
|
queryRunner: QueryRunner,
|
||||||
) {
|
) {
|
||||||
const subspaces: IModifySubspaceModelInterface = {};
|
const subspaces: IModifySubspaceModelInterface = {
|
||||||
|
spaceModelUuid: spaceModel.uuid,
|
||||||
|
};
|
||||||
try {
|
try {
|
||||||
if (dto.add) {
|
if (dto.add) {
|
||||||
const addedSubspaces = await this.createSubSpaceModels(
|
const addedSubspaces = await this.createSubSpaceModels(
|
||||||
@ -194,11 +199,20 @@ export class SubSpaceModelService {
|
|||||||
queryRunner,
|
queryRunner,
|
||||||
);
|
);
|
||||||
subspaces.update = updatedSubspaces;
|
subspaces.update = updatedSubspaces;
|
||||||
|
} else if (dto.delete) {
|
||||||
|
const deletedSubspaces = await this.deleteSubspaceModels(
|
||||||
|
dto.delete,
|
||||||
|
queryRunner,
|
||||||
|
);
|
||||||
|
subspaces.delete = deletedSubspaces;
|
||||||
}
|
}
|
||||||
return subspaces;
|
return subspaces;
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
|
if (error instanceof HttpException) {
|
||||||
|
throw error;
|
||||||
|
}
|
||||||
throw new HttpException(
|
throw new HttpException(
|
||||||
error.message || 'Failed to update SpaceModel',
|
error.message || 'Failed to modify SpaceModels',
|
||||||
HttpStatus.INTERNAL_SERVER_ERROR,
|
HttpStatus.INTERNAL_SERVER_ERROR,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user