import { prisma } from '../lib/prisma'; import { CategoryInput } from '../schemas/category.schema'; export async function createCategory(data: CategoryInput) { return prisma.categoria.create({ data, }); } export async function listCategories() { return prisma.categoria.findMany({ include: { _count: { select: { produtos: true } } }, }); } export async function getCategoryById(id: string) { return prisma.categoria.findUnique({ where: { id }, include: { produtos: true }, }); } export async function updateCategory(id: string, data: CategoryInput) { return prisma.categoria.update({ where: { id }, data, }); } export async function deleteCategory(id: string) { const categoria = await prisma.categoria.findUnique({ where: { id }, include: { _count: { select: { produtos: true } } }, }); if (!categoria) { throw new Error('Categoria não encontrada'); } if (categoria._count.produtos > 0) { throw new Error(`Não é possível excluir: a categoria possui ${categoria._count.produtos} produto(s). Remova ou reatribua os produtos primeiro.`); } return prisma.categoria.delete({ where: { id }, }); }