import { listDiplomes, getDiplomeById, createDiplome, updateDiplomeById, deleteDiplomeById } from "@/services/diplomes.service";
import { omitInternalId, omitInternalIdList } from "@/server/public-entity";
import type { PublicDiplome, PublicFeed } from "@/types";
import type { diplomeCreateInput, diplomeUpdateInput } from "@/validators/diplomes";

export async function getDiplomesFeed(limit: number, offset: number): Promise<PublicFeed<PublicDiplome>> {
  const diplomes = await listDiplomes(limit, offset);

  return {
    items: omitInternalIdList(diplomes),
    count: diplomes.length,
  };
}

export async function getDiplomeDetails(id: number): Promise<{ diplome: PublicDiplome | null | undefined }> {
  const diplome = await getDiplomeById(id);

  return {
    diplome: omitInternalId(diplome),
  };
}

export async function createDiplomeFeed(data: diplomeCreateInput): Promise<{ diplome: PublicDiplome | null | undefined }> {
  const diplome = await createDiplome(data);

  return {
    diplome: omitInternalId(diplome),
  };
}

export async function updateDiplomeFeed(id: number, data: diplomeUpdateInput): Promise<{ diplome: PublicDiplome | null | undefined }> {
  const diplome = await updateDiplomeById(id, data);

  return {
    diplome: omitInternalId(diplome),
  };
}

export async function deleteDiplomeFeed(id: number): Promise<{ diplome: PublicDiplome | null | undefined }> {
  const diplome = await deleteDiplomeById(id);

  return {
    diplome: omitInternalId(diplome),
  };
}
