faster querying

This commit is contained in:
hannathkadher
2025-02-03 00:43:38 +04:00
parent 7f69867e8a
commit 427e764539
3 changed files with 18 additions and 6 deletions

View File

@ -25,7 +25,10 @@ import { ProjectRepository } from '@app/common/modules/project/repositiories';
import { TuyaService } from '@app/common/integrations/tuya/services/tuya.service';
import { UserService, UserSpaceService } from 'src/users/services';
import { UserDevicePermissionService } from 'src/user-device-permission/services';
import { DeviceUserPermissionRepository } from '@app/common/modules/device/repositories';
import {
DeviceRepository,
DeviceUserPermissionRepository,
} from '@app/common/modules/device/repositories';
import { PermissionTypeRepository } from '@app/common/modules/permission/repositories';
import { ProjectUserService } from 'src/project/services/project-user.service';
import { RoleTypeRepository } from '@app/common/modules/role-type/repositories';
@ -44,6 +47,7 @@ import { TimeZoneRepository } from '@app/common/modules/timezone/repositories';
SpaceUserService,
ValidationService,
UserSpaceRepository,
DeviceRepository,
CommunityService,
SpaceRepository,
SpaceModelRepository,

View File

@ -26,7 +26,7 @@ export class SpaceDeviceService {
spaceUuid,
);
if (space.devices.length === 0) {
if (!space.devices || space.devices.length === 0) {
throw new HttpException(
'The space does not contain any devices.',
HttpStatus.BAD_REQUEST,

View File

@ -9,6 +9,7 @@ import {
} from '@app/common/modules/space-model';
import { ProjectRepository } from '@app/common/modules/project/repositiories';
import { CommunityRepository } from '@app/common/modules/community/repositories';
import { DeviceRepository } from '@app/common/modules/device/repositories';
@Injectable()
export class ValidationService {
@ -19,6 +20,7 @@ export class ValidationService {
private readonly projectRepository: ProjectRepository,
private readonly communityRepository: CommunityRepository,
private readonly spaceModelRepository: SpaceModelRepository,
private readonly deviceRepository: DeviceRepository,
) {}
async validateCommunityAndProject(
@ -65,7 +67,9 @@ export class ValidationService {
spaceUuid?: string,
): Promise<SpaceEntity> {
await this.validateCommunityAndProject(communityUuid, projectUuid);
const space = await this.validateSpace(spaceUuid);
return space;
}
@ -79,10 +83,6 @@ export class ValidationService {
'tags',
'subspaces.tags',
'subspaces.devices',
//'devices',
//'devices.productDevice',
//'devices.tag',
// 'devices.subspace',
],
});
@ -93,6 +93,14 @@ export class ValidationService {
);
}
const devices = await this.deviceRepository.find({
where: { spaceDevice: { uuid: spaceUuid } },
select: ['uuid', 'deviceTuyaUuid', 'isActive', 'createdAt', 'updatedAt'],
relations: ['productDevice', 'tag', 'subspace'],
});
space.devices = devices;
return space;
}