Add Tuya const uuid to device

This commit is contained in:
Mhd Zayd Skaff
2025-07-06 13:20:33 +03:00
parent b197ba29ca
commit 88207d22d8
4 changed files with 1141 additions and 1082 deletions

View File

@ -641,6 +641,11 @@ export class ControllerRoute {
'Delete scenes by device uuid and switch name'; 'Delete scenes by device uuid and switch name';
public static readonly DELETE_SCENES_BY_SWITCH_NAME_DESCRIPTION = public static readonly DELETE_SCENES_BY_SWITCH_NAME_DESCRIPTION =
'This endpoint deletes all scenes associated with a specific switch device.'; 'This endpoint deletes all scenes associated with a specific switch device.';
public static readonly POPULATE_TUYA_CONST_UUID_SUMMARY =
'Populate Tuya const UUID';
public static readonly POPULATE_TUYA_CONST_UUID_DESCRIPTION =
'This endpoint populates the Tuya const UUID for all devices.';
}; };
}; };
static DEVICE_COMMISSION = class { static DEVICE_COMMISSION = class {

View File

@ -29,7 +29,7 @@ export class DeviceEntity extends AbstractEntity<DeviceDto> {
deviceTuyaUuid: string; deviceTuyaUuid: string;
@Column({ @Column({
nullable: false, nullable: true,
}) })
deviceTuyaConstUuid: string; deviceTuyaConstUuid: string;

View File

@ -1,39 +1,41 @@
import { DeviceService } from '../services/device.service'; import { ControllerRoute } from '@app/common/constants/controller-route';
import { EnableDisableStatusEnum } from '@app/common/constants/days.enum';
import { RoleType } from '@app/common/constants/role.type.enum';
import { BaseResponseDto } from '@app/common/dto/base.response.dto';
import { import {
Body, Body,
Controller, Controller,
Get,
Post,
Query,
Param,
UseGuards,
Put,
Delete, Delete,
Get,
Param,
Post,
Put,
Query,
Req, Req,
UnauthorizedException,
UseGuards,
} from '@nestjs/common'; } from '@nestjs/common';
import { ApiTags, ApiBearerAuth, ApiOperation } from '@nestjs/swagger'; import { ApiBearerAuth, ApiOperation, ApiTags } from '@nestjs/swagger';
import { Permissions } from 'src/decorators/permissions.decorator';
import { PermissionsGuard } from 'src/guards/permissions.guard';
import { CheckRoomGuard } from 'src/guards/room.guard';
import { CheckFourAndSixSceneDeviceTypeGuard } from 'src/guards/scene.device.type.guard';
import { import {
AddDeviceDto, AddDeviceDto,
AddSceneToFourSceneDeviceDto, AddSceneToFourSceneDeviceDto,
AssignDeviceToSpaceDto, AssignDeviceToSpaceDto,
UpdateDeviceDto, UpdateDeviceDto,
} from '../dtos/add.device.dto'; } from '../dtos/add.device.dto';
import { GetDeviceLogsDto } from '../dtos/get.device.dto';
import { import {
ControlDeviceDto,
BatchControlDevicesDto, BatchControlDevicesDto,
BatchStatusDevicesDto, BatchStatusDevicesDto,
ControlDeviceDto,
GetSceneFourSceneDeviceDto, GetSceneFourSceneDeviceDto,
} from '../dtos/control.device.dto'; } from '../dtos/control.device.dto';
import { CheckRoomGuard } from 'src/guards/room.guard';
import { EnableDisableStatusEnum } from '@app/common/constants/days.enum';
import { CheckFourAndSixSceneDeviceTypeGuard } from 'src/guards/scene.device.type.guard';
import { ControllerRoute } from '@app/common/constants/controller-route';
import { BaseResponseDto } from '@app/common/dto/base.response.dto';
import { DeviceSceneParamDto } from '../dtos/device.param.dto';
import { DeleteSceneFromSceneDeviceDto } from '../dtos/delete.device.dto'; import { DeleteSceneFromSceneDeviceDto } from '../dtos/delete.device.dto';
import { PermissionsGuard } from 'src/guards/permissions.guard'; import { DeviceSceneParamDto } from '../dtos/device.param.dto';
import { Permissions } from 'src/decorators/permissions.decorator'; import { GetDeviceLogsDto } from '../dtos/get.device.dto';
import { DeviceService } from '../services/device.service';
@ApiTags('Device Module') @ApiTags('Device Module')
@Controller({ @Controller({
@ -340,4 +342,22 @@ export class DeviceController {
projectUuid, projectUuid,
); );
} }
@ApiBearerAuth()
@UseGuards(PermissionsGuard)
@Permissions('DEVICE_UPDATE')
@Post('/populate-tuya-const-uuids')
@ApiOperation({
summary: ControllerRoute.DEVICE.ACTIONS.POPULATE_TUYA_CONST_UUID_SUMMARY,
description:
ControllerRoute.DEVICE.ACTIONS.POPULATE_TUYA_CONST_UUID_DESCRIPTION,
})
async populateTuyaConstUuid(@Req() req: any): Promise<void> {
const userUuid = req['user']?.userUuid;
const userRole = req['user']?.role;
if (!userUuid || (userRole && userRole !== RoleType.SUPER_ADMIN)) {
throw new UnauthorizedException('Unauthorized to perform this action');
}
return this.deviceService.addTuyaConstUuidToDevices();
}
} }

File diff suppressed because it is too large Load Diff