import prisma from '../config/db.js';
import type { CreateCostCodeBody, UpdateCostCodeBody } from '../validators/costCode.validator.js';
import type { Pagination } from '../utils/pagination.js';

export function createCostCode(data: CreateCostCodeBody) {
  return prisma.costCode.create({ data });
}

export function getCostCodes({ skip, take }: Pick<Pagination, 'skip' | 'take'>) {
  return prisma.costCode.findMany({ orderBy: { code: 'asc' }, skip, take });
}

export function countCostCodes() {
  return prisma.costCode.count();
}

export function getCostCodeById(id: number) {
  return prisma.costCode.findUnique({ where: { id } });
}

export function updateCostCode(id: number, data: UpdateCostCodeBody) {
  return prisma.costCode.update({ where: { id }, data });
}

export async function deleteCostCode(id: number) {
  await prisma.costCode.delete({ where: { id } });
}
