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

View File

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

View File

@ -9,6 +9,7 @@ import {
} from '@app/common/modules/space-model'; } from '@app/common/modules/space-model';
import { ProjectRepository } from '@app/common/modules/project/repositiories'; import { ProjectRepository } from '@app/common/modules/project/repositiories';
import { CommunityRepository } from '@app/common/modules/community/repositories'; import { CommunityRepository } from '@app/common/modules/community/repositories';
import { DeviceRepository } from '@app/common/modules/device/repositories';
@Injectable() @Injectable()
export class ValidationService { export class ValidationService {
@ -19,6 +20,7 @@ export class ValidationService {
private readonly projectRepository: ProjectRepository, private readonly projectRepository: ProjectRepository,
private readonly communityRepository: CommunityRepository, private readonly communityRepository: CommunityRepository,
private readonly spaceModelRepository: SpaceModelRepository, private readonly spaceModelRepository: SpaceModelRepository,
private readonly deviceRepository: DeviceRepository,
) {} ) {}
async validateCommunityAndProject( async validateCommunityAndProject(
@ -65,7 +67,9 @@ export class ValidationService {
spaceUuid?: string, spaceUuid?: string,
): Promise<SpaceEntity> { ): Promise<SpaceEntity> {
await this.validateCommunityAndProject(communityUuid, projectUuid); await this.validateCommunityAndProject(communityUuid, projectUuid);
const space = await this.validateSpace(spaceUuid); const space = await this.validateSpace(spaceUuid);
return space; return space;
} }
@ -79,10 +83,6 @@ export class ValidationService {
'tags', 'tags',
'subspaces.tags', 'subspaces.tags',
'subspaces.devices', '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; return space;
} }