import { Injectable } from '@nestjs/common' import { User } from '@prisma/client' import { PrismaService } from 'src/prisma/prisma.service' import * as bcrypt from 'bcrypt' import { UpdatePasswordDto } from './dto/user_password.dto' import { QueryPaginationDto } from 'src/common/dto/pagination-query.dto' import { paginate } from 'src/common/utils/pagination.utils' @Injectable() export class UsersService { constructor(private prisma: PrismaService) {} async findAll(queryPagination?: QueryPaginationDto): Promise<[User[], number]> { return [ await this.prisma.user.findMany({ ...paginate(queryPagination) }), await this.prisma.user.count() ] } async findOne(id: number): Promise { return await this.prisma.user.findUnique({ where: { id } }) } async updatePassword(user: User, { password }: UpdatePasswordDto): Promise { const hashedPassword = await bcrypt.hash(password, 10) await this.prisma.user.update({ where: { id: user.id }, data: { password: hashedPassword } }) } }