diff --git a/src/power-clamp/controllers/power-clamp.controller.ts b/src/power-clamp/controllers/power-clamp.controller.ts index 347013c..b3773bc 100644 --- a/src/power-clamp/controllers/power-clamp.controller.ts +++ b/src/power-clamp/controllers/power-clamp.controller.ts @@ -6,6 +6,7 @@ import { JwtAuthGuard } from '@app/common/guards/jwt.auth.guard'; import { PowerClampService } from '../services/power-clamp.service'; import { GetPowerClampDto } from '../dto/get-power-clamp.dto'; import { BaseResponseDto } from '@app/common/dto/base.response.dto'; +import { PowerClampParamsDto } from '../dto/power-clamp-params.dto'; @ApiTags('Power Clamp Module') @Controller({ @@ -23,12 +24,9 @@ export class PowerClampController { description: ControllerRoute.PowerClamp.ACTIONS.GET_ENERGY_DESCRIPTION, }) async getPowerClampData( - @Param('powerClampUuid') powerClampUuid: string, - @Query() params: GetPowerClampDto, + @Param() params: PowerClampParamsDto, + @Query() query: GetPowerClampDto, ): Promise { - return await this.powerClampService.getPowerClampData( - powerClampUuid, - params, - ); + return await this.powerClampService.getPowerClampData(params, query); } } diff --git a/src/power-clamp/dto/power-clamp-params.dto.ts b/src/power-clamp/dto/power-clamp-params.dto.ts new file mode 100644 index 0000000..42f8e11 --- /dev/null +++ b/src/power-clamp/dto/power-clamp-params.dto.ts @@ -0,0 +1,6 @@ +import { IsUUID } from 'class-validator'; + +export class PowerClampParamsDto { + @IsUUID('4', { message: 'Invalid UUID format' }) + powerClampUuid: string; +} diff --git a/src/power-clamp/power-clamp.module.ts b/src/power-clamp/power-clamp.module.ts index 3f2a713..9cd6496 100644 --- a/src/power-clamp/power-clamp.module.ts +++ b/src/power-clamp/power-clamp.module.ts @@ -7,6 +7,7 @@ import { PowerClampHourlyRepository, PowerClampMonthlyRepository, } from '@app/common/modules/power-clamp/repositories'; +import { DeviceRepository } from '@app/common/modules/device/repositories'; @Module({ imports: [ConfigModule], controllers: [PowerClampController], @@ -15,6 +16,7 @@ import { PowerClampDailyRepository, PowerClampHourlyRepository, PowerClampMonthlyRepository, + DeviceRepository, ], exports: [PowerClampService], }) diff --git a/src/power-clamp/services/power-clamp.service.ts b/src/power-clamp/services/power-clamp.service.ts index 5a4a8f8..b95c9f0 100644 --- a/src/power-clamp/services/power-clamp.service.ts +++ b/src/power-clamp/services/power-clamp.service.ts @@ -6,6 +6,8 @@ import { PowerClampMonthlyRepository, } from '@app/common/modules/power-clamp/repositories'; import { SuccessResponseDto } from '@app/common/dto/success.response.dto'; +import { PowerClampParamsDto } from '../dto/power-clamp-params.dto'; +import { DeviceRepository } from '@app/common/modules/device/repositories'; @Injectable() export class PowerClampService { @@ -13,12 +15,24 @@ export class PowerClampService { private readonly powerClampDailyRepository: PowerClampDailyRepository, private readonly powerClampHourlyRepository: PowerClampHourlyRepository, private readonly powerClampMonthlyRepository: PowerClampMonthlyRepository, + private readonly deviceRepository: DeviceRepository, ) {} - async getPowerClampData(powerClampUuid: string, params: GetPowerClampDto) { - const { dayDate, monthDate, year } = params; - + async getPowerClampData( + params: PowerClampParamsDto, + query: GetPowerClampDto, + ) { + const { dayDate, monthDate, year } = query; + const { powerClampUuid } = params; try { + const device = await this.deviceRepository.findOne({ + where: { + uuid: powerClampUuid, + }, + }); + if (!device) { + throw new HttpException('Power clamp not found', HttpStatus.NOT_FOUND); + } if (dayDate) { const data = await this.powerClampHourlyRepository .createQueryBuilder('hourly') @@ -72,8 +86,8 @@ export class PowerClampService { return this.buildResponse(`Power clamp data fetched successfully`, []); } catch (error) { throw new HttpException( - 'Error fetching power clamp data', - HttpStatus.INTERNAL_SERVER_ERROR, + error.message || 'Error fetching power clamp data', + error.status || HttpStatus.INTERNAL_SERVER_ERROR, ); } }