mirror of
https://github.com/EmulatorJS/EmulatorJS.git
synced 2026-02-06 11:17:36 +00:00
Refactor EJS_STORAGE methods to simplify database calls
This commit is contained in:
parent
d47a9ae0a0
commit
cdbb6a2f8d
@ -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() {
|
||||
|
||||
Loading…
Reference in New Issue
Block a user