import prisma from '../config/db.js';
import type { CreateMaterialBody, UpdateMaterialBody } from '../validators/material.validator.js';
import type { Pagination } from '../utils/pagination.js';

export function createMaterial(data: CreateMaterialBody) {
  return prisma.material.create({ data, include: { unit: true } });
}

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

export function countMaterials() {
  return prisma.material.count();
}

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

export function updateMaterial(id: number, data: UpdateMaterialBody) {
  return prisma.material.update({ where: { id }, data, include: { unit: true } });
}

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