Added user controller and getUser method

This commit is contained in:
2023-11-18 02:02:46 +03:00
parent a8db05fb03
commit e466e55bef
4 changed files with 62 additions and 0 deletions

View File

@@ -0,0 +1,18 @@
import { Body, Controller, Post } from '@nestjs/common';
import { ApiOperation, ApiTags } from '@nestjs/swagger';
import { IGetUser } from './user.dto';
import { UserService } from './user.service';
@ApiTags('User')
@Controller('user')
export class UserController {
constructor(private adminService: UserService) {}
@ApiOperation({
description: 'Create or get user from db',
})
@Post('get')
async getUser(@Body() data: IGetUser) {
return await this.adminService.getUser(data);
}
}

View File

@@ -0,0 +1,6 @@
import { ApiProperty } from '@nestjs/swagger';
export class IGetUser {
@ApiProperty({ description: 'telegram id', example: '123456' }) readonly id: string;
@ApiProperty({ description: 'telegram username', example: 'durov' }) readonly username?: string;
}

View File

@@ -0,0 +1,11 @@
import { Module } from '@nestjs/common';
import { LibsModule } from 'libs/libs.module';
import { UserController } from './user.controller';
import { UserService } from './user.service';
@Module({
imports: [LibsModule],
controllers: [UserController],
providers: [UserService],
})
export class UserModule {}

View File

@@ -0,0 +1,27 @@
import { Injectable, Logger } from '@nestjs/common';
import { InjectRepository } from '@nestjs/typeorm';
import { User } from 'libs/database/user.entity';
import { Repository } from 'typeorm';
import { IGetUser } from './user.dto';
@Injectable()
export class UserService {
private readonly logger: Logger = new Logger(UserService.name);
constructor(@InjectRepository(User) private userRepository: Repository<User>) {}
async getUser(data: IGetUser) {
try {
this.logger.debug(`[admin.getUser] data: ${JSON.stringify(data)}`);
let user = await this.userRepository.findOne({
where: { id: data.id },
});
if (!user) {
user = await this.userRepository.save({ id: data.id, user_name: data.username });
this.logger.log(`User ${data.id} created`);
}
return user;
} catch (error) {
this.logger.log(`[getUser] ${JSON.stringify({ error })}`);
}
}
}