import { PasswordUtil } from '@/common/utils/password.util' import { AccountStatus, AccountType, ProviderRole } from '@/generated/prisma/enums' import { PrismaService } from '@/prisma/prisma.service' import { Injectable } from '@nestjs/common' import { ResponseMapper } from 'common/response/response-mapper' import { CreateProviderDto, UpdateProviderDto } from './dto/provider.dto' @Injectable() export class ProvidersService { constructor(private readonly prisma: PrismaService) {} async findAll() { const providers = await this.prisma.provider.findMany() return ResponseMapper.list(providers) } async findOne(id: string) { const provider = await this.prisma.provider.findUnique({ where: { id }, include: { pos_list: true }, }) return ResponseMapper.single(provider) } async create(data: CreateProviderDto) { const { username, password, ...rest } = data const provider = await this.prisma.provider.create({ data: { ...rest, provider_accounts: { create: { role: ProviderRole.OWNER, account: { create: { username, password: await PasswordUtil.hash(password), status: AccountStatus.ACTIVE, type: AccountType.PROVIDER, }, }, }, }, }, }) return ResponseMapper.create(provider) } async update(id: string, data: UpdateProviderDto) { const provider = await this.prisma.provider.update({ where: { id }, data }) return ResponseMapper.update(provider) } // async delete(id: string) { // await this.prisma.provider.delete({ where: { id } }) // return ResponseMapper.delete() // } }