import { openDB, type IDBPDatabase } from "idb";
import type { Dossier } from "@/lib/dossier/types";

const DB_NAME = "notary-dossiers";
const DB_VERSION = 1;

type DossierDB = {
  dossiers: {
    key: string;
    value: Dossier;
  };
};

let dbPromise: Promise<IDBPDatabase<DossierDB>> | null = null;

export function getDossierDb(): Promise<IDBPDatabase<DossierDB>> {
  if (!dbPromise) {
    dbPromise = openDB<DossierDB>(DB_NAME, DB_VERSION, {
      upgrade(db, oldVersion) {
        if (oldVersion < 1) {
          db.createObjectStore("dossiers", { keyPath: "id" });
        }
      },
    });
  }
  return dbPromise;
}

export async function alleDossiers(): Promise<Dossier[]> {
  const db = await getDossierDb();
  return db.getAll("dossiers");
}

export async function slaDossierOp(dossier: Dossier): Promise<void> {
  const db = await getDossierDb();
  await db.put("dossiers", dossier);
}

export async function verwijderDossier(id: string): Promise<void> {
  const db = await getDossierDb();
  await db.delete("dossiers", id);
}
