Refactor EJS_STORAGE methods to simplify database calls

This commit is contained in:
Michael Green 2025-11-21 16:04:23 +11:00
parent d47a9ae0a0
commit cdbb6a2f8d

View File

@ -3,7 +3,7 @@ class EJS_STORAGE {
this.dbName = dbName;
this.storeName = storeName;
}
addFileToDB(key, add) {
#addFileToDB(key, add) {
(async () => {
if (key === "?EJS_KEYS!") return;
let keys = await this.get("?EJS_KEYS!");
@ -17,73 +17,54 @@ class EJS_STORAGE {
this.put("?EJS_KEYS!", keys);
})();
}
get(key) {
#getObjectStore(mode = "readwrite") {
return new Promise((resolve, reject) => {
if (!window.indexedDB) return resolve();
let openRequest = indexedDB.open(this.dbName, 1);
openRequest.onerror = () => resolve();
openRequest.onsuccess = () => {
let db = openRequest.result;
let transaction = db.transaction([this.storeName], "readwrite");
let transaction = db.transaction([this.storeName], mode);
let objectStore = transaction.objectStore(this.storeName);
let request = objectStore.get(key);
request.onsuccess = (e) => {
resolve(request.result);
};
request.onerror = () => resolve();
resolve(objectStore);
};
openRequest.onupgradeneeded = () => {
let db = openRequest.result;
if (!db.objectStoreNames.contains(this.storeName)) {
db.createObjectStore(this.storeName);
};
}
};
});
}
get(key) {
return new Promise(async (resolve, reject) => {
const objectStore = await this.#getObjectStore();
if (!objectStore) return resolve();
let request = objectStore.get(key);
request.onsuccess = () => resolve(request.result);
request.onerror = () => resolve();
});
}
put(key, data) {
return new Promise((resolve, reject) => {
if (!window.indexedDB) return resolve();
let openRequest = indexedDB.open(this.dbName, 1);
openRequest.onerror = () => {};
openRequest.onsuccess = () => {
let db = openRequest.result;
let transaction = db.transaction([this.storeName], "readwrite");
let objectStore = transaction.objectStore(this.storeName);
let request = objectStore.put(data, key);
request.onerror = () => resolve();
request.onsuccess = () => {
this.addFileToDB(key, true);
resolve();
}
return new Promise(async (resolve, reject) => {
const objectStore = await this.#getObjectStore();
if (!objectStore) return resolve();
let request = objectStore.put(data, key);
request.onerror = () => resolve();
request.onsuccess = () => {
this.#addFileToDB(key, true);
resolve();
};
openRequest.onupgradeneeded = () => {
let db = openRequest.result;
if (!db.objectStoreNames.contains(this.storeName)) {
db.createObjectStore(this.storeName);
};
};
})
});
}
remove(key) {
return new Promise((resolve, reject) => {
if (!window.indexedDB) return resolve();
let openRequest = indexedDB.open(this.dbName, 1);
openRequest.onerror = () => {};
openRequest.onsuccess = () => {
let db = openRequest.result;
let transaction = db.transaction([this.storeName], "readwrite");
let objectStore = transaction.objectStore(this.storeName);
let request2 = objectStore.delete(key);
this.addFileToDB(key, false);
request2.onsuccess = () => resolve();
request2.onerror = () => {};
};
openRequest.onupgradeneeded = () => {
let db = openRequest.result;
if (!db.objectStoreNames.contains(this.storeName)) {
db.createObjectStore(this.storeName);
};
};
return new Promise(async (resolve, reject) => {
const objectStore = await this.#getObjectStore();
if (!objectStore) return resolve();
let request = objectStore.delete(key);
this.#addFileToDB(key, false);
request.onsuccess = () => resolve();
request.onerror = () => {};
});
}
getSizes() {
@ -126,7 +107,7 @@ class EJS_STORAGE {
class EJS_DUMMYSTORAGE {
constructor() {}
addFileToDB() {
#addFileToDB() {
return new Promise(resolve => resolve());
}
get() {