73 lines
1.7 KiB
TypeScript
73 lines
1.7 KiB
TypeScript
import {
|
|
BadRequestException,
|
|
Injectable,
|
|
RequestTimeoutException,
|
|
} from '@nestjs/common';
|
|
import { Repository } from 'typeorm';
|
|
import { User } from '../user.entity';
|
|
import { InjectRepository } from '@nestjs/typeorm';
|
|
|
|
@Injectable()
|
|
export class UsersService {
|
|
constructor(
|
|
/**
|
|
* Injecting User Repository
|
|
*/
|
|
@InjectRepository(User)
|
|
private readonly userRepository: Repository<User>,
|
|
) {}
|
|
|
|
public async findOneById(id: number) {
|
|
let user: User | null;
|
|
try {
|
|
user = await this.userRepository.findOneById(id);
|
|
} catch (err) {
|
|
throw new RequestTimeoutException('common.errors.requestTimeout', {
|
|
cause: err,
|
|
description: 'Error connecting to the database',
|
|
});
|
|
}
|
|
|
|
if (!user) {
|
|
throw new BadRequestException('users.errors.userNotExist');
|
|
}
|
|
|
|
return user;
|
|
}
|
|
|
|
public async findOneByPhone(phone: string) {
|
|
try {
|
|
return await this.userRepository.findOneBy({ phone });
|
|
} catch (err) {
|
|
throw new RequestTimeoutException('common.errors.requestTimeout', {
|
|
cause: err,
|
|
description: 'Error connecting to the database',
|
|
});
|
|
}
|
|
}
|
|
|
|
public async createOne(phone: string) {
|
|
const newUser = this.userRepository.create({ phone });
|
|
|
|
try {
|
|
await this.userRepository.save(newUser);
|
|
} catch (err) {
|
|
throw new RequestTimeoutException('common.errors.requestTimeout', {
|
|
cause: err,
|
|
description: 'Error connecting to the database',
|
|
});
|
|
}
|
|
|
|
return newUser;
|
|
}
|
|
|
|
public getProfile(user: User) {
|
|
return {
|
|
phone: user.phone,
|
|
firstName: user.firstName,
|
|
lastName: user.lastName,
|
|
dateJoined: user.createdAt,
|
|
};
|
|
}
|
|
}
|