Files
heala-backend/src/modules/users/providers/users.service.ts
T

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