import { JobData, Model } from '../types'; const DB_NAME = 'SadaAI_DB'; const STORE_JOBS = 'jobs'; const STORE_CUSTOM_MODELS = 'custom_models'; const DB_VERSION = 2; // Incremented version for new store export const initDB = (): Promise => { return new Promise((resolve, reject) => { const request = indexedDB.open(DB_NAME, DB_VERSION); request.onerror = () => reject(request.error); request.onsuccess = () => resolve(request.result); request.onupgradeneeded = (event) => { const db = (event.target as IDBOpenDBRequest).result; if (!db.objectStoreNames.contains(STORE_JOBS)) { db.createObjectStore(STORE_JOBS, { keyPath: 'job_id' }); } if (!db.objectStoreNames.contains(STORE_CUSTOM_MODELS)) { db.createObjectStore(STORE_CUSTOM_MODELS, { keyPath: 'id' }); } }; }); }; // Jobs Methods export const saveJob = async (job: JobData): Promise => { const db = await initDB(); const transaction = db.transaction(STORE_JOBS, 'readwrite'); const store = transaction.objectStore(STORE_JOBS); await store.put(job); }; export const getAllJobs = async (): Promise => { const db = await initDB(); const transaction = db.transaction(STORE_JOBS, 'readonly'); const store = transaction.objectStore(STORE_JOBS); const request = store.getAll(); return new Promise((resolve) => { request.onsuccess = () => resolve(request.result || []); }); }; export const deleteJob = async (jobId: string): Promise => { const db = await initDB(); const transaction = db.transaction(STORE_JOBS, 'readwrite'); const store = transaction.objectStore(STORE_JOBS); await store.delete(jobId); }; export const clearAllJobs = async (): Promise => { const db = await initDB(); const transaction = db.transaction(STORE_JOBS, 'readwrite'); const store = transaction.objectStore(STORE_JOBS); await store.clear(); }; // Custom Models Methods export const saveCustomModel = async (model: Model): Promise => { const db = await initDB(); const transaction = db.transaction(STORE_CUSTOM_MODELS, 'readwrite'); const store = transaction.objectStore(STORE_CUSTOM_MODELS); await store.put(model); }; export const getAllCustomModels = async (): Promise => { const db = await initDB(); const transaction = db.transaction(STORE_CUSTOM_MODELS, 'readonly'); const store = transaction.objectStore(STORE_CUSTOM_MODELS); const request = store.getAll(); return new Promise((resolve) => { request.onsuccess = () => resolve(request.result || []); }); }; export const deleteCustomModel = async (id: string): Promise => { const db = await initDB(); const transaction = db.transaction(STORE_CUSTOM_MODELS, 'readwrite'); const store = transaction.objectStore(STORE_CUSTOM_MODELS); await store.delete(id); };