MCPcopy Create free account
hub / github.com/HelloCSV/HelloCSV / getIndexedDBState

Function getIndexedDBState

src/importer/storage.ts:8–43  ·  view source on GitHub ↗
(
  sheetDefinitions: SheetDefinition[],
  customKey?: string | null
)

Source from the content-addressed store, hash-verified

6const STORE_NAME = 'state';
7
8export async function getIndexedDBState(
9 sheetDefinitions: SheetDefinition[],
10 customKey?: string | null
11): Promise<ImporterState | null> {
12 return new Promise((resolve, reject) => {
13 const key = stateKey(sheetDefinitions, customKey);
14 const request = indexedDB.open(DB_NAME, DB_VERSION);
15 request.onerror = () => reject(request.error);
16 request.onsuccess = () => {
17 const db = request.result;
18 const transaction = db.transaction(STORE_NAME, 'readonly');
19 const store = transaction.objectStore(STORE_NAME);
20 const getRequest = store.get(key);
21 getRequest.onerror = () => resolve(null);
22 getRequest.onsuccess = () => {
23 try {
24 const result = getRequest.result;
25 result.sheetDefinitions = sheetDefinitions;
26 resolve(result);
27 } catch (error) {
28 resolve(null);
29 }
30 };
31 };
32
33 request.onupgradeneeded = (event) => {
34 const db = (event.target as IDBOpenDBRequest).result;
35 if (db.objectStoreNames.contains(STORE_NAME)) {
36 db.deleteObjectStore(STORE_NAME);
37 }
38
39 // Create fresh store
40 db.createObjectStore(STORE_NAME);
41 };
42 });
43}
44
45export async function setIndexedDBState(
46 state: ImporterState,

Callers 1

buildStateWithIndexedDBFunction · 0.90

Calls 1

stateKeyFunction · 0.85

Tested by

no test coverage detected