32 lines
1.0 KiB
TypeScript
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 }
|
|
})
|
|
}
|
|
}
|