Files
limelite_faceanalyzer/frontend/src/db.js
T

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);
});
};