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, ) {} 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, }; } }