// db.ts const DB_NAME = 'report-db'; const STORE_NAME = 'report-store'; const DB_VERSION = 1; export async function openDB(): Promise { return new Promise((resolve, reject) => { const request = indexedDB.open(DB_NAME, DB_VERSION); request.onupgradeneeded = (event) => { const db = (event.target as IDBOpenDBRequest).result; if (!db.objectStoreNames.contains(STORE_NAME)) { db.createObjectStore(STORE_NAME, { keyPath: 'month' }); } }; request.onsuccess = () => resolve(request.result); request.onerror = () => reject(request.error); }); } export async function getMonthRecord(month: string): Promise<{ count: number } | undefined> { const db = await openDB(); return new Promise((resolve, reject) => { const tx = db.transaction(STORE_NAME, 'readonly'); const store = tx.objectStore(STORE_NAME); const request = store.get(month); request.onsuccess = () => resolve(request.result); request.onerror = () => reject(request.error); }); } export async function setMonthRecord(month: string, count: number) { const db = await openDB(); return new Promise((resolve, reject) => { const tx = db.transaction(STORE_NAME, 'readwrite'); const store = tx.objectStore(STORE_NAME); store.put({ month, count }); tx.oncomplete = () => resolve(); tx.onerror = () => reject(tx.error); }); }