import { prisma } from "@/lib/prisma";
import type { Prisma } from "@/generated/prisma/client";
import type { diplomeCreateInput, diplomeUpdateInput } from "@/validators/diplomes";

export async function listDiplomes(limit: number, offset: number) {
  return prisma.diplomes.findMany({
    orderBy: [{ id: "asc" }],
    take: limit,
    skip: offset,
  });
}

export async function getDiplomeById(id: number) {
  return prisma.diplomes.findUnique({
    where: {
      id: id,
    },
  });
}

export async function createDiplome(data: diplomeCreateInput) {
  return prisma.diplomes.create({
    data: data as Prisma.diplomesCreateInput,
  });
}

export async function updateDiplomeById(id: number, data: diplomeUpdateInput) {
  const existing = await prisma.diplomes.findUnique({
    where: {
      id: id,
    },
  });

  if (!existing) {
    return null;
  }

  return prisma.diplomes.update({
    where: {
      id: id,
    },
    data: data as Prisma.diplomesUpdateInput,
  });
}

export async function deleteDiplomeById(id: number) {
  const existing = await prisma.diplomes.findUnique({
    where: {
      id: id,
    },
  });

  if (!existing) {
    return null;
  }

  return prisma.diplomes.delete({
    where: {
      id: id,
    },
  });
}
