convert project from microservices to rest apis

This commit is contained in:
faris Aljohari
2024-03-10 12:49:51 +03:00
parent b3179a5c1f
commit c5537b3230
72 changed files with 155 additions and 384 deletions
+1
View File
@@ -0,0 +1 @@
export * from './user.controller';
+25
View File
@@ -0,0 +1,25 @@
import { Controller, Get, Query, UseGuards } from '@nestjs/common';
import { UserService } from '../services/user.service';
import { UserListDto } from '../dtos/user.list.dto';
import { ApiTags, ApiBearerAuth } from '@nestjs/swagger';
import { JwtAuthGuard } from '../../../libs/common/src/guards/jwt.auth.guard';
@ApiTags('User Module')
@Controller({
version: '1',
path: 'user',
})
export class UserController {
constructor(private readonly userService: UserService) {}
@ApiBearerAuth()
@UseGuards(JwtAuthGuard)
@Get('list')
async userList(@Query() userListDto: UserListDto) {
try {
return await this.userService.userDetails(userListDto);
} catch (err) {
throw new Error(err);
}
}
}
+1
View File
@@ -0,0 +1 @@
export * from './user.list.dto';
+32
View File
@@ -0,0 +1,32 @@
import {
IsNotEmpty,
IsNumberString,
IsOptional,
IsString,
} from 'class-validator';
export class UserListDto {
@IsString()
@IsOptional()
schema: string;
@IsNumberString()
@IsNotEmpty()
page_no: number;
@IsNumberString()
@IsNotEmpty()
page_size: number;
@IsString()
@IsOptional()
username: string;
@IsNumberString()
@IsOptional()
start_time: number;
@IsNumberString()
@IsOptional()
end_time: number;
}
+1
View File
@@ -0,0 +1 @@
export * from './user.service';
+28
View File
@@ -0,0 +1,28 @@
import { Injectable } from '@nestjs/common';
import { TuyaContext } from '@tuya/tuya-connector-nodejs';
import { UserListDto } from '../dtos/user.list.dto';
import { ConfigService } from '@nestjs/config';
@Injectable()
export class UserService {
private tuya: TuyaContext;
constructor(private readonly configService: ConfigService) {
const accessKey = this.configService.get<string>('auth-config.ACCESS_KEY');
const secretKey = this.configService.get<string>('auth-config.SECRET_KEY');
// const clientId = this.configService.get<string>('auth-config.CLIENT_ID');
this.tuya = new TuyaContext({
baseUrl: 'https://openapi.tuyaeu.com',
accessKey,
secretKey,
});
}
async userDetails(userListDto: UserListDto) {
const path = `/v2.0/apps/${userListDto.schema}/users`;
const data = await this.tuya.request({
method: 'GET',
path,
query: userListDto,
});
return data;
}
}
+12
View File
@@ -0,0 +1,12 @@
import { Module } from '@nestjs/common';
import { UserService } from './services/user.service';
import { UserController } from './controllers/user.controller';
import { ConfigModule } from '@nestjs/config';
@Module({
imports: [ConfigModule],
controllers: [UserController],
providers: [UserService],
exports: [UserService],
})
export class UserModule {}