import Dexie, { type Table } from 'dexie'; export interface PendingRequest { clientRequestId: string; // primary key workstationId: string; description: string; photoBlob?: Blob; queuedAt: number; retries: number; lastError?: string; } export interface DeadLetter { clientRequestId: string; error: string; failedAt: number; } class MaiCallDb extends Dexie { pending!: Table; deadLetters!: Table; constructor() { super('mai-call-v1'); this.version(1).stores({ pending: 'clientRequestId, queuedAt', deadLetters: 'clientRequestId', }); } } // Single browser-side instance. Guards against SSR import. function makeDb(): MaiCallDb { if (typeof window === 'undefined') { return null as unknown as MaiCallDb; // never called server-side } return new MaiCallDb(); } export const db = makeDb();