mirror of
https://github.com/SyncrowIOT/backend.git
synced 2025-07-16 10:46:17 +00:00
Refactor device controller and service
This commit is contained in:
@ -40,9 +40,9 @@ export class DeviceController {
|
|||||||
@ApiBearerAuth()
|
@ApiBearerAuth()
|
||||||
@UseGuards(JwtAuthGuard, CheckDeviceGuard)
|
@UseGuards(JwtAuthGuard, CheckDeviceGuard)
|
||||||
@Post()
|
@Post()
|
||||||
async addDevice(@Body() addDeviceDto: AddDeviceDto) {
|
async addDeviceUser(@Body() addDeviceDto: AddDeviceDto) {
|
||||||
try {
|
try {
|
||||||
const device = await this.deviceService.addDevice(addDeviceDto);
|
const device = await this.deviceService.addDeviceUser(addDeviceDto);
|
||||||
|
|
||||||
return {
|
return {
|
||||||
statusCode: HttpStatus.CREATED,
|
statusCode: HttpStatus.CREATED,
|
||||||
@ -58,6 +58,19 @@ export class DeviceController {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ApiBearerAuth()
|
@ApiBearerAuth()
|
||||||
|
@UseGuards(JwtAuthGuard)
|
||||||
|
@Get(':userUuid')
|
||||||
|
async getDevicesByUser(@Param('userUuid') userUuid: string) {
|
||||||
|
try {
|
||||||
|
return await this.deviceService.getDevicesByUser(userUuid);
|
||||||
|
} catch (error) {
|
||||||
|
throw new HttpException(
|
||||||
|
error.message || 'Internal server error',
|
||||||
|
error.status || HttpStatus.INTERNAL_SERVER_ERROR,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@ApiBearerAuth()
|
||||||
@UseGuards(JwtAuthGuard, CheckRoomGuard)
|
@UseGuards(JwtAuthGuard, CheckRoomGuard)
|
||||||
@Get('room')
|
@Get('room')
|
||||||
async getDevicesByRoomId(
|
async getDevicesByRoomId(
|
||||||
|
@ -48,7 +48,7 @@ export class DeviceService {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
async addDevice(addDeviceDto: AddDeviceDto) {
|
async addDeviceUser(addDeviceDto: AddDeviceDto) {
|
||||||
try {
|
try {
|
||||||
const device = await this.getDeviceDetailsByDeviceIdTuya(
|
const device = await this.getDeviceDetailsByDeviceIdTuya(
|
||||||
addDeviceDto.deviceTuyaUuid,
|
addDeviceDto.deviceTuyaUuid,
|
||||||
@ -79,7 +79,50 @@ export class DeviceService {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
async getDevicesByUser(
|
||||||
|
userUuid: string,
|
||||||
|
): Promise<GetDeviceDetailsInterface[]> {
|
||||||
|
try {
|
||||||
|
const devices = await this.deviceRepository.find({
|
||||||
|
where: {
|
||||||
|
user: { uuid: userUuid },
|
||||||
|
permission: {
|
||||||
|
userUuid,
|
||||||
|
permissionType: {
|
||||||
|
type: In([PermissionType.READ, PermissionType.CONTROLLABLE]),
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
relations: [
|
||||||
|
'spaceDevice',
|
||||||
|
'productDevice',
|
||||||
|
'permission',
|
||||||
|
'permission.permissionType',
|
||||||
|
],
|
||||||
|
});
|
||||||
|
const devicesData = await Promise.all(
|
||||||
|
devices.map(async (device) => {
|
||||||
|
return {
|
||||||
|
...(await this.getDeviceDetailsByDeviceIdTuya(
|
||||||
|
device.deviceTuyaUuid,
|
||||||
|
)),
|
||||||
|
uuid: device.uuid,
|
||||||
|
productUuid: device.productDevice.uuid,
|
||||||
|
productType: device.productDevice.prodType,
|
||||||
|
permissionType: device.permission[0].permissionType.type,
|
||||||
|
} as GetDeviceDetailsInterface;
|
||||||
|
}),
|
||||||
|
);
|
||||||
|
|
||||||
|
return devicesData;
|
||||||
|
} catch (error) {
|
||||||
|
// Handle the error here
|
||||||
|
throw new HttpException(
|
||||||
|
'User does not have any devices',
|
||||||
|
HttpStatus.NOT_FOUND,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
async getDevicesByRoomId(
|
async getDevicesByRoomId(
|
||||||
getDeviceByRoomUuidDto: GetDeviceByRoomUuidDto,
|
getDeviceByRoomUuidDto: GetDeviceByRoomUuidDto,
|
||||||
userUuid: string,
|
userUuid: string,
|
||||||
|
Reference in New Issue
Block a user