mirror of
https://github.com/MrSedan/neuro-reply-website.git
synced 2026-01-14 20:49:42 +03:00
Added user controller and getUser method
This commit is contained in:
18
backend/src/modules/user/user.controller.ts
Normal file
18
backend/src/modules/user/user.controller.ts
Normal 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);
|
||||||
|
}
|
||||||
|
}
|
||||||
6
backend/src/modules/user/user.dto.ts
Normal file
6
backend/src/modules/user/user.dto.ts
Normal 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;
|
||||||
|
}
|
||||||
11
backend/src/modules/user/user.module.ts
Normal file
11
backend/src/modules/user/user.module.ts
Normal 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 {}
|
||||||
27
backend/src/modules/user/user.service.ts
Normal file
27
backend/src/modules/user/user.service.ts
Normal 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 })}`);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user