mirror of
https://github.com/SyncrowIOT/backend.git
synced 2025-11-26 21:34:55 +00:00
fixing propagation
This commit is contained in:
@ -104,7 +104,7 @@ export class PropogateUpdateSpaceModelHandler
|
||||
for (const space of spaces) {
|
||||
await this.subSpaceService.createSubSpaceFromModel(
|
||||
subspaceModels,
|
||||
space,
|
||||
[space],
|
||||
queryRunner,
|
||||
);
|
||||
}
|
||||
|
||||
@ -16,6 +16,7 @@ import { ProductEntity } from '@app/common/modules/product/entities';
|
||||
import { SpaceRepository } from '@app/common/modules/space';
|
||||
import { SpaceProductAllocationService } from 'src/space/services/space-product-allocation.service';
|
||||
import { SpaceEntity } from '@app/common/modules/space/entities/space.entity';
|
||||
import { ProjectEntity } from '@app/common/modules/project/entities';
|
||||
|
||||
@Injectable()
|
||||
export class SpaceModelProductAllocationService {
|
||||
@ -141,7 +142,7 @@ export class SpaceModelProductAllocationService {
|
||||
|
||||
async updateProductAllocations(
|
||||
dtos: ModifyTagModelDto[],
|
||||
projectUuid: string,
|
||||
project: ProjectEntity,
|
||||
spaceModel: SpaceModelEntity,
|
||||
queryRunner: QueryRunner,
|
||||
modifySubspaceModels?: ModifySubspaceModelDto[],
|
||||
@ -161,7 +162,7 @@ export class SpaceModelProductAllocationService {
|
||||
|
||||
const processedTags = await this.tagService.processTags(
|
||||
addTagDtos,
|
||||
projectUuid,
|
||||
project.uuid,
|
||||
queryRunner,
|
||||
);
|
||||
const addTagUuidMap = new Map<string, ModifyTagModelDto>();
|
||||
@ -192,13 +193,19 @@ export class SpaceModelProductAllocationService {
|
||||
await Promise.all([
|
||||
this.processAddActions(
|
||||
filteredDtos,
|
||||
projectUuid,
|
||||
project.uuid,
|
||||
spaceModel,
|
||||
queryRunner,
|
||||
modifySubspaceModels,
|
||||
spaces,
|
||||
),
|
||||
this.processDeleteActions(filteredDtos, queryRunner, spaceModel),
|
||||
this.processDeleteActions(
|
||||
filteredDtos,
|
||||
queryRunner,
|
||||
spaceModel,
|
||||
project,
|
||||
spaces,
|
||||
),
|
||||
]);
|
||||
} catch (error) {
|
||||
throw this.handleError(error, 'Error while updating product allocations');
|
||||
@ -304,6 +311,8 @@ export class SpaceModelProductAllocationService {
|
||||
dtos: ModifyTagModelDto[],
|
||||
queryRunner: QueryRunner,
|
||||
spaceModel: SpaceModelEntity,
|
||||
project: ProjectEntity,
|
||||
spaces?: SpaceEntity[],
|
||||
): Promise<SpaceModelProductAllocationEntity[]> {
|
||||
try {
|
||||
if (!dtos || dtos.length === 0) {
|
||||
@ -325,7 +334,11 @@ export class SpaceModelProductAllocationService {
|
||||
uuid: spaceModel.uuid,
|
||||
},
|
||||
},
|
||||
relations: ['tags'],
|
||||
relations: [
|
||||
'tags',
|
||||
'inheritedSpaceAllocations',
|
||||
'inheritedSpaceAllocations.tags',
|
||||
],
|
||||
},
|
||||
);
|
||||
|
||||
@ -365,6 +378,14 @@ export class SpaceModelProductAllocationService {
|
||||
);
|
||||
}
|
||||
|
||||
await this.spaceProductAllocationService.propagateDeleteToInheritedAllocations(
|
||||
queryRunner,
|
||||
allocationsToUpdate,
|
||||
tagUuidsToDelete,
|
||||
project,
|
||||
spaces,
|
||||
);
|
||||
|
||||
await queryRunner.manager
|
||||
.createQueryBuilder()
|
||||
.delete()
|
||||
|
||||
@ -189,7 +189,7 @@ export class SpaceModelService {
|
||||
|
||||
async update(dto: UpdateSpaceModelDto, param: SpaceModelParam) {
|
||||
const queryRunner = this.dataSource.createQueryRunner();
|
||||
await this.validateProject(param.projectUuid);
|
||||
const project = await this.validateProject(param.projectUuid);
|
||||
const spaceModel = await this.validateSpaceModel(
|
||||
param.spaceModelUuid,
|
||||
param.projectUuid,
|
||||
@ -227,7 +227,7 @@ export class SpaceModelService {
|
||||
if (dto.tags) {
|
||||
await this.spaceModelProductAllocationService.updateProductAllocations(
|
||||
dto.tags,
|
||||
param.projectUuid,
|
||||
project,
|
||||
spaceModel,
|
||||
queryRunner,
|
||||
dto.subspaceModels,
|
||||
|
||||
@ -14,6 +14,8 @@ import { ProcessTagDto } from 'src/tags/dtos';
|
||||
import { TagService } from 'src/tags/services';
|
||||
import { SubspaceModelProductAllocationService } from './subspace-model-product-allocation.service';
|
||||
import { ISingleSubspaceModel } from 'src/space-model/interfaces';
|
||||
import { SpaceEntity } from '@app/common/modules/space/entities/space.entity';
|
||||
import { SubSpaceService } from 'src/space/services/subspace';
|
||||
|
||||
@Injectable()
|
||||
export class SubSpaceModelService {
|
||||
@ -21,6 +23,7 @@ export class SubSpaceModelService {
|
||||
private readonly subspaceModelRepository: SubspaceModelRepository,
|
||||
private readonly tagService: TagService,
|
||||
private readonly productAllocationService: SubspaceModelProductAllocationService,
|
||||
private readonly subspaceService: SubSpaceService,
|
||||
) {}
|
||||
|
||||
async createModels(
|
||||
@ -74,6 +77,7 @@ export class SubSpaceModelService {
|
||||
dtos: ModifySubspaceModelDto[],
|
||||
spaceModel: SpaceModelEntity,
|
||||
queryRunner: QueryRunner,
|
||||
spaces?: SpaceEntity[],
|
||||
): Promise<ISingleSubspaceModel[]> {
|
||||
if (!dtos.length) return [];
|
||||
|
||||
@ -89,6 +93,14 @@ export class SubSpaceModelService {
|
||||
|
||||
const savedSubspaces = await queryRunner.manager.save(subspaceEntities);
|
||||
|
||||
if (spaces) {
|
||||
await this.subspaceService.createSubSpaceFromModel(
|
||||
savedSubspaces,
|
||||
spaces,
|
||||
queryRunner,
|
||||
);
|
||||
}
|
||||
|
||||
return savedSubspaces.map((subspace, index) => ({
|
||||
subspaceModel: subspace,
|
||||
action: ModifyAction.ADD,
|
||||
@ -102,6 +114,7 @@ export class SubSpaceModelService {
|
||||
queryRunner: QueryRunner,
|
||||
projectUuid: string,
|
||||
spaceTagUpdateDtos?: ModifyTagModelDto[],
|
||||
spaces?: SpaceEntity[],
|
||||
) {
|
||||
try {
|
||||
if (!dtos || dtos.length === 0) {
|
||||
@ -125,6 +138,7 @@ export class SubSpaceModelService {
|
||||
addDtos,
|
||||
spaceModel,
|
||||
queryRunner,
|
||||
spaces,
|
||||
);
|
||||
const combineModels = [...addedModels, ...updatedModels];
|
||||
|
||||
|
||||
@ -46,6 +46,16 @@ import { SpaceModelProductAllocationService } from './services/space-model-produ
|
||||
import { SubspaceModelProductAllocationService } from './services/subspace/subspace-model-product-allocation.service';
|
||||
import { SpaceProductAllocationService } from 'src/space/services/space-product-allocation.service';
|
||||
import { SubspaceProductAllocationService } from 'src/space/services/subspace/subspace-product-allocation.service';
|
||||
import { DeviceService } from 'src/device/services';
|
||||
import { SceneDeviceRepository } from '@app/common/modules/scene-device/repositories';
|
||||
import { DeviceStatusFirebaseService } from '@app/common/firebase/devices-status/services/devices-status.service';
|
||||
import { SceneService } from 'src/scene/services';
|
||||
import { DeviceStatusLogRepository } from '@app/common/modules/device-status-log/repositories';
|
||||
import {
|
||||
SceneIconRepository,
|
||||
SceneRepository,
|
||||
} from '@app/common/modules/scene/repositories';
|
||||
import { AutomationRepository } from '@app/common/modules/automation/repositories';
|
||||
|
||||
const CommandHandlers = [
|
||||
PropogateUpdateSpaceModelHandler,
|
||||
@ -80,6 +90,14 @@ const CommandHandlers = [
|
||||
SpaceLinkRepository,
|
||||
InviteSpaceRepository,
|
||||
NewTagService,
|
||||
DeviceService,
|
||||
DeviceStatusFirebaseService,
|
||||
DeviceStatusLogRepository,
|
||||
SceneService,
|
||||
SceneIconRepository,
|
||||
SceneDeviceRepository,
|
||||
SceneRepository,
|
||||
AutomationRepository,
|
||||
SpaceModelProductAllocationRepoitory,
|
||||
SubspaceModelProductAllocationRepoitory,
|
||||
NewTagRepository,
|
||||
@ -90,6 +108,7 @@ const CommandHandlers = [
|
||||
SubspaceProductAllocationService,
|
||||
SpaceProductAllocationRepository,
|
||||
SubspaceProductAllocationRepository,
|
||||
SubSpaceService,
|
||||
],
|
||||
exports: [CqrsModule, SpaceModelService],
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user