import Dexie from "dexie";
import session from "./Session";

// Uses Dexie.js
// https://dexie.org/docs/API-Reference#quick-reference
//
// Notes:
// - As per docs, we only declare the indexable columns, not all columns

// The IndexedDB database name is based on the logged-in user
const dbName = session.username() ? `ntfy-${session.username()}` : "ntfy";
const db = new Dexie(dbName);

db.version(1).stores({
  subscriptions: "&id,baseUrl",
  notifications: "&id,subscriptionId,time,new,[subscriptionId+new]", // compound key for query performance
  users: "&baseUrl,username",
  prefs: "&key",
});

export default db;
