import prisma from '../config/db.js';
import type { CreateLabourBody, UpdateLabourBody } from '../validators/labour.validator.js';
import type { Pagination } from '../utils/pagination.js';

export function createLabour(data: CreateLabourBody) {
  return prisma.labour.create({ data, include: { unit: true } });
}

export function getLabours({ skip, take }: Pick<Pagination, 'skip' | 'take'>) {
  return prisma.labour.findMany({ orderBy: { name: 'asc' }, skip, take, include: { unit: true } });
}

export function countLabours() {
  return prisma.labour.count();
}

export function getLabourById(id: number) {
  return prisma.labour.findUnique({ where: { id }, include: { unit: true } });
}

export function updateLabour(id: number, data: UpdateLabourBody) {
  return prisma.labour.update({ where: { id }, data, include: { unit: true } });
}

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