mirror of
https://github.com/SyncrowIOT/backend.git
synced 2025-07-10 15:17:41 +00:00
finished return the last three parents
This commit is contained in:
@ -46,6 +46,16 @@ import { NewTagRepository } from '@app/common/modules/tag/repositories/tag-repos
|
||||
import { ProductRepository } from '@app/common/modules/product/repositories';
|
||||
import { SpaceModelProductAllocationService } from 'src/space-model/services/space-model-product-allocation.service';
|
||||
import { SubspaceModelProductAllocationService } from 'src/space-model/services/subspace/subspace-model-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';
|
||||
|
||||
@Module({
|
||||
imports: [ConfigModule, SpaceRepositoryModule, UserRepositoryModule],
|
||||
@ -84,6 +94,14 @@ import { SubspaceModelProductAllocationService } from 'src/space-model/services/
|
||||
SubspaceModelProductAllocationService,
|
||||
SpaceModelProductAllocationRepoitory,
|
||||
SubspaceModelProductAllocationRepoitory,
|
||||
DeviceService,
|
||||
SceneDeviceRepository,
|
||||
DeviceStatusFirebaseService,
|
||||
SceneService,
|
||||
DeviceStatusLogRepository,
|
||||
SceneIconRepository,
|
||||
SceneRepository,
|
||||
AutomationRepository,
|
||||
],
|
||||
exports: [CommunityService, SpacePermissionService],
|
||||
})
|
||||
|
@ -66,6 +66,16 @@ import { NewTagRepository } from '@app/common/modules/tag/repositories/tag-repos
|
||||
import { ProductRepository } from '@app/common/modules/product/repositories';
|
||||
import { SpaceModelProductAllocationService } from 'src/space-model/services/space-model-product-allocation.service';
|
||||
import { SubspaceModelProductAllocationService } from 'src/space-model/services/subspace/subspace-model-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';
|
||||
|
||||
@Module({
|
||||
imports: [ConfigModule, InviteUserRepositoryModule, CommunityModule],
|
||||
@ -122,6 +132,14 @@ import { SubspaceModelProductAllocationService } from 'src/space-model/services/
|
||||
SubspaceModelProductAllocationService,
|
||||
SpaceModelProductAllocationRepoitory,
|
||||
SubspaceModelProductAllocationRepoitory,
|
||||
DeviceService,
|
||||
SceneDeviceRepository,
|
||||
DeviceStatusFirebaseService,
|
||||
SceneService,
|
||||
DeviceStatusLogRepository,
|
||||
SceneIconRepository,
|
||||
SceneRepository,
|
||||
AutomationRepository,
|
||||
],
|
||||
exports: [InviteUserService],
|
||||
})
|
||||
|
7
src/space/dtos/space.parents.dto.ts
Normal file
7
src/space/dtos/space.parents.dto.ts
Normal file
@ -0,0 +1,7 @@
|
||||
import { SpaceEntity } from '@app/common/modules/space/entities/space.entity';
|
||||
import { Expose } from 'class-transformer';
|
||||
|
||||
export class SpaceWithParentsDto extends SpaceEntity {
|
||||
@Expose()
|
||||
lastThreeParents: string;
|
||||
}
|
@ -36,6 +36,8 @@ import { SpaceEntity } from '@app/common/modules/space/entities/space.entity';
|
||||
import { ProcessTagDto } from 'src/tags/dtos';
|
||||
import { SpaceProductAllocationService } from './space-product-allocation.service';
|
||||
import { SubspaceEntity } from '@app/common/modules/space/entities/subspace/subspace.entity';
|
||||
import { DeviceService } from 'src/device/services';
|
||||
import { SpaceWithParentsDto } from '../dtos/space.parents.dto';
|
||||
@Injectable()
|
||||
export class SpaceService {
|
||||
constructor(
|
||||
@ -47,6 +49,7 @@ export class SpaceService {
|
||||
private readonly validationService: ValidationService,
|
||||
private readonly newTagService: NewTagService,
|
||||
private readonly spaceModelService: SpaceModelService,
|
||||
private readonly deviceService: DeviceService,
|
||||
private commandBus: CommandBus,
|
||||
private readonly spaceProductAllocationService: SpaceProductAllocationService,
|
||||
) {}
|
||||
@ -235,7 +238,25 @@ export class SpaceService {
|
||||
queryBuilder.innerJoin('space.devices', 'devices');
|
||||
}
|
||||
|
||||
const spaces = await queryBuilder.getMany();
|
||||
let spaces = await queryBuilder.getMany();
|
||||
|
||||
if (onlyWithDevices) {
|
||||
spaces = await Promise.all(
|
||||
spaces.map(async (space) => {
|
||||
const spaceHierarchy =
|
||||
await this.deviceService.getParentHierarchy(space);
|
||||
const parentHierarchy = spaceHierarchy
|
||||
.slice(0, 3)
|
||||
.map((space) => space.spaceName)
|
||||
.join(' - ');
|
||||
|
||||
return {
|
||||
...space,
|
||||
lastThreeParents: parentHierarchy,
|
||||
} as SpaceWithParentsDto;
|
||||
}),
|
||||
);
|
||||
}
|
||||
|
||||
const transformedSpaces = spaces.map(this.transformSpace);
|
||||
const spaceHierarchy = this.buildSpaceHierarchy(transformedSpaces);
|
||||
|
Reference in New Issue
Block a user