"use client";
import { getModeldocumentenDb } from "@/lib/db/modeldocumenten-db";
import { useGesynchroniseerdeOpslag } from "@/lib/hooks/useGesynchroniseerdeOpslag";
import type { BronDocument } from "@/data/modeldocumenten";

async function lokaalLezen(): Promise<BronDocument[]> {
  const db = await getModeldocumentenDb();
  return db.getAll("bronnen");
}
async function lokaalSchrijven(item: BronDocument): Promise<void> {
  const db = await getModeldocumentenDb();
  await db.put("bronnen", item);
}
async function lokaalVerwijderen(id: string): Promise<void> {
  const db = await getModeldocumentenDb();
  await db.delete("bronnen", id);
}

/**
 * Register van reeds verwerkte bronbestanden (bestandsnaam + datum). Pure
 * metadata over herkomst, geen modelclausule-inhoud: rechtstreeks
 * beheerbaar, zonder het wijzigingsvoorstel-regime (zie AGENTS.md).
 */
export function useVerwerkteBronnenStorage() {
  const { items, geladen, slaOp, verwijder } = useGesynchroniseerdeOpslag<BronDocument>(
    "/api/sync/modeldocumenten-bronnen",
    lokaalLezen,
    lokaalSchrijven,
    lokaalVerwijderen
  );

  return { bronnen: items, geladen, slaOp, verwijder };
}
