const DB_NAME = 'blento-images'; const STORE_NAME = 'images'; function openDB(): Promise { return new Promise((resolve, reject) => { const request = indexedDB.open(DB_NAME, 1); request.onupgradeneeded = () => { request.result.createObjectStore(STORE_NAME); }; request.onsuccess = () => resolve(request.result); request.onerror = () => reject(request.error); }); } export async function putImage(key: string, blob: Blob, name: string): Promise { const db = await openDB(); const data = await blob.arrayBuffer(); return new Promise((resolve, reject) => { const tx = db.transaction(STORE_NAME, 'readwrite'); tx.objectStore(STORE_NAME).put({ data, type: blob.type, name }, key); tx.oncomplete = () => resolve(); tx.onerror = () => reject(tx.error); }); } export async function getImage(key: string): Promise<{ blob: Blob; name: string } | null> { const db = await openDB(); return new Promise((resolve, reject) => { const tx = db.transaction(STORE_NAME, 'readonly'); const request = tx.objectStore(STORE_NAME).get(key); request.onsuccess = () => { if (!request.result) return resolve(null); const { data, type, name } = request.result; resolve({ blob: new Blob([data], { type }), name }); }; request.onerror = () => reject(request.error); }); } export async function deleteImage(key: string): Promise { const db = await openDB(); return new Promise((resolve, reject) => { const tx = db.transaction(STORE_NAME, 'readwrite'); tx.objectStore(STORE_NAME).delete(key); tx.oncomplete = () => resolve(); tx.onerror = () => reject(tx.error); }); } export async function clearImages(): Promise { const db = await openDB(); return new Promise((resolve, reject) => { const tx = db.transaction(STORE_NAME, 'readwrite'); tx.objectStore(STORE_NAME).clear(); tx.oncomplete = () => resolve(); tx.onerror = () => reject(tx.error); }); }