openDatabase = (resolve, reject, databaseName, objectStore, keyPath, version) => {
function openDB(resolve, reject, version) {
const indexedDataBase = self.indexedDB || self.mozIndexedDB || self.webkitIndexedDB || self.msIndexedDB;
const IndexedDBTransaction = self.IDBTransaction || self.webkitIDBTransaction || self.msIDBTransaction;
const IndexedDBKeyRange = self.IDBKeyRange || self.webkitIDBKeyRange || self.msIDBKeyRange;
if (!indexedDataBase) {
reject("You Browser does not support IndexedDB.");
}
const idb_openrequest = !!version? indexedDataBase.open(databaseName, version): indexedDataBase.open(databaseName);
idb_openrequest.onerror = (event) => {
console.error("open request error event:", idb_openrequest.error);
reject(idb_openrequest.error);
};
idb_openrequest.onsuccess = (event) => {
const idb = event.target.result;
const storeIsThere = idb.objectStoreNames.contains(objectStore);
if(!storeIsThere){
console.log("A new object store needs to be created. database is to be upgraded.");
console.log("Current database version ", parseInt(idb.version));
idb.close();
openDB(resolve, reject, idb.version + 1);
} else {
resolve(idb);
}
}
idb_openrequest.onupgradeneeded = (event) => {
const idb = event.target.result;
console.log("onupgradeneeded:", event, "DB: ", idb);
createObjectStore(idb, objectStore, keyPath);
};
}
return openDB(resolve, reject, version);
}