mirror of
https://github.com/MrSedan/neuro-reply-website.git
synced 2026-01-14 20:49:42 +03:00
67 lines
2.5 KiB
TypeScript
67 lines
2.5 KiB
TypeScript
import { HttpException, HttpStatus, 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(`[user.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.debug(`[user.getUser] ${JSON.stringify({ error })}`);
|
|
}
|
|
}
|
|
async banUser(id: string) {
|
|
try {
|
|
this.logger.debug(`[user.banUser] id: ${JSON.stringify(id)}`);
|
|
let user = await this.userRepository.findOne({
|
|
where: { id: id },
|
|
});
|
|
if (user) {
|
|
user.banned = true;
|
|
await this.userRepository.save(user);
|
|
return user;
|
|
}
|
|
|
|
user = await this.userRepository.save({ id: id, banned: true });
|
|
return user;
|
|
} catch (error) {
|
|
this.logger.debug(`[user.banUser] ${JSON.stringify({ error })}`);
|
|
}
|
|
}
|
|
|
|
async unBanUser(id: string) {
|
|
try {
|
|
this.logger.debug(`[user.unBanUser] id: ${JSON.stringify(id)}`);
|
|
let user = await this.userRepository.findOne({
|
|
where: { id: id },
|
|
});
|
|
if (!user) {
|
|
throw new HttpException('No user with this id', HttpStatus.NOT_FOUND);
|
|
}
|
|
user = await this.userRepository.save({ id: user.id, banned: false });
|
|
return user;
|
|
} catch (error) {
|
|
if (error instanceof HttpException) {
|
|
this.logger.debug(`[user.unBanUser] User with id: ${id} not found`);
|
|
throw error;
|
|
}
|
|
this.logger.debug(`[user.deBanUser] ${JSON.stringify({ error })}`);
|
|
throw new HttpException(`[user.unBanUser] Error: ${JSON.stringify(error)}`, HttpStatus.BAD_GATEWAY);
|
|
}
|
|
}
|
|
}
|