import { openDB, type IDBPDatabase } from "idb";
import type { KennisItem } from "@/data/kennisbank";
import type { AkteChecklist } from "@/data/kennisbank-checklists";

const DB_NAME = "notary-kennisbank";
const DB_VERSION = 2;

type KennisbankDB = {
  items: {
    key: string;
    value: KennisItem;
  };
  checklists: {
    key: string;
    value: AkteChecklist;
  };
};

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

export function getKennisbankDb(): Promise<IDBPDatabase<KennisbankDB>> {
  if (!dbPromise) {
    dbPromise = openDB<KennisbankDB>(DB_NAME, DB_VERSION, {
      upgrade(db, oudeVersie) {
        if (oudeVersie < 1) db.createObjectStore("items", { keyPath: "id" });
        if (oudeVersie < 2) db.createObjectStore("checklists", { keyPath: "id" });
      },
    });
  }
  return dbPromise;
}
