traintrape-moi/server/src/users/users.service.ts

32 lines
1.0 KiB
TypeScript

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<User> {
return await this.prisma.user.findUnique({ where: { id } })
}
async updatePassword(user: User, { password }: UpdatePasswordDto): Promise<void> {
const hashedPassword = await bcrypt.hash(password, 10)
await this.prisma.user.update({
where: { id: user.id },
data: { password: hashedPassword }
})
}
}