43 lines
1.7 KiB
JavaScript
43 lines
1.7 KiB
JavaScript
export const saveToDB = (key, value) => {
|
|
return new Promise((resolve, reject) => {
|
|
const request = indexedDB.open('LimeliteDB', 1);
|
|
request.onupgradeneeded = e => {
|
|
const db = e.target.result;
|
|
if (!db.objectStoreNames.contains('analysisStore')) {
|
|
db.createObjectStore('analysisStore');
|
|
}
|
|
};
|
|
request.onsuccess = e => {
|
|
const db = e.target.result;
|
|
const tx = db.transaction('analysisStore', 'readwrite');
|
|
const store = tx.objectStore('analysisStore');
|
|
const req = value === null ? store.delete(key) : store.put(value, key);
|
|
req.onsuccess = () => resolve();
|
|
req.onerror = () => reject(req.error);
|
|
};
|
|
request.onerror = () => reject(request.error);
|
|
});
|
|
};
|
|
|
|
export const loadFromDB = (key) => {
|
|
return new Promise((resolve, reject) => {
|
|
const request = indexedDB.open('LimeliteDB', 1);
|
|
request.onupgradeneeded = e => {
|
|
const db = e.target.result;
|
|
if (!db.objectStoreNames.contains('analysisStore')) {
|
|
db.createObjectStore('analysisStore');
|
|
}
|
|
};
|
|
request.onsuccess = e => {
|
|
const db = e.target.result;
|
|
if (!db.objectStoreNames.contains('analysisStore')) return resolve(null);
|
|
const tx = db.transaction('analysisStore', 'readonly');
|
|
const store = tx.objectStore('analysisStore');
|
|
const req = store.get(key);
|
|
req.onsuccess = () => resolve(req.result);
|
|
req.onerror = () => reject(req.error);
|
|
};
|
|
request.onerror = () => reject(request.error);
|
|
});
|
|
};
|