123456789101112131415161718192021222324252627282930313233343536373839404142 |
- // db.ts
- const DB_NAME = 'report-db';
- const STORE_NAME = 'report-store';
- const DB_VERSION = 1;
- export async function openDB(): Promise<IDBDatabase> {
- 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<void>((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);
- });
- }
|