const DB_NAME = 'GLTFStorage'; const STORE_NAME = 'models'; const DB_VERSION = 1; export function initializeDB(): Promise { return new Promise((resolve, reject) => { const request = indexedDB.open(DB_NAME, DB_VERSION); request.onupgradeneeded = () => { const db = request.result; if (!db.objectStoreNames.contains(STORE_NAME)) { db.createObjectStore(STORE_NAME); } }; request.onsuccess = () => resolve(request.result); request.onerror = () => reject(request.error); }); } export async function storeGLTF(key: string, file: Blob): Promise { const db = await initializeDB(); return new Promise((resolve, reject) => { const transaction = db.transaction(STORE_NAME, 'readwrite'); const store = transaction.objectStore(STORE_NAME); const request = store.put(file, key); request.onsuccess = () => resolve(); request.onerror = () => reject(request.error); }); } export async function retrieveGLTF(key: string): Promise { const db = await initializeDB(); return new Promise((resolve, reject) => { const transaction = db.transaction(STORE_NAME, 'readonly'); const store = transaction.objectStore(STORE_NAME); const request = store.get(key); request.onsuccess = () => resolve(request.result as Blob | undefined); request.onerror = () => reject(request.error); }); }