From cdbb6a2f8de84a4d9dc57c2d97c552ca1d111ceb Mon Sep 17 00:00:00 2001 From: Michael Green Date: Fri, 21 Nov 2025 16:04:23 +1100 Subject: [PATCH] Refactor EJS_STORAGE methods to simplify database calls --- data/src/storage.js | 81 +++++++++++++++++---------------------------- 1 file changed, 31 insertions(+), 50 deletions(-) diff --git a/data/src/storage.js b/data/src/storage.js index 498998c..0a8a0c1 100644 --- a/data/src/storage.js +++ b/data/src/storage.js @@ -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() {