From 853811553e9c5e366fccf3f8847bc0cc54ac4370 Mon Sep 17 00:00:00 2001 From: isra el Date: Sat, 11 Mar 2023 19:34:40 +0300 Subject: [PATCH] chore(api): get user device list --- api/src/gateway/gateway.controller.ts | 14 ++++++++++++++ api/src/gateway/gateway.service.ts | 16 +++++++++++++++- 2 files changed, 29 insertions(+), 1 deletion(-) diff --git a/api/src/gateway/gateway.controller.ts b/api/src/gateway/gateway.controller.ts index aa0f258..7a0f049 100644 --- a/api/src/gateway/gateway.controller.ts +++ b/api/src/gateway/gateway.controller.ts @@ -6,6 +6,7 @@ import { Post, UseGuards, Request, + Get, } from '@nestjs/common' import { ApiBearerAuth, ApiOperation, ApiQuery, ApiTags } from '@nestjs/swagger' import { AuthGuard } from 'src/auth/auth.guard' @@ -31,6 +32,19 @@ export class GatewayController { return { data } } + @UseGuards(AuthGuard) + @ApiOperation({ summary: 'List of registered devices' }) + @ApiQuery({ + name: 'apiKey', + required: false, + description: 'Required if jwt bearer token not provided', + }) + @Get('/devices') + async getDevices(@Body() input: RegisterDeviceInputDTO, @Request() req) { + const data = await this.gatewayService.getDevicesForUser(req.user) + return { data } + } + @ApiOperation({ summary: 'Update device' }) @ApiQuery({ name: 'apiKey', diff --git a/api/src/gateway/gateway.service.ts b/api/src/gateway/gateway.service.ts index c08244a..75cbfcc 100644 --- a/api/src/gateway/gateway.service.ts +++ b/api/src/gateway/gateway.service.ts @@ -15,7 +15,21 @@ export class GatewayService { input: RegisterDeviceInputDTO, user: User, ): Promise { - return await this.deviceModel.create({ ...input, user }) + const device = await this.deviceModel.findOne({ + user: user._id, + model: input.model, + buildId: input.buildId, + }) + + if (device) { + return await this.updateDevice(device._id, { ...input, enabled: true }) + } else { + return await this.deviceModel.create({ ...input, user }) + } + } + + async getDevicesForUser(user: User): Promise { + return await this.deviceModel.find({ user: user._id }) } async updateDevice(