diff --git a/standard_Operations.html b/standard_Operations.html index 572aded..8462f27 100644 --- a/standard_Operations.html +++ b/standard_Operations.html @@ -8377,33 +8377,40 @@ Bitcoin.Util = { this.dbName = dbName; }, - initDB: function (dbName, objectStores = {}) { + initDB: function (dbName, objectStores = {}, version = null, removeStores = []) { return new Promise((resolve, reject) => { this.dbName = this.dbName || dbName; - var idb = indexedDB.open(dbName); + var idb = version ? indexedDB.open(dbName, version) : indexedDB.open(dbName); idb.onerror = (event) => { reject("Error in opening IndexedDB!"); }; idb.onupgradeneeded = (event) => { var db = event.target.result; - for (obs in objectStores) { + for (let obs in objectStores) { var objectStore = db.createObjectStore(obs, objectStores[obs].options || {}); if (objectStores[obs].indexes && typeof objectStores[obs].indexes === 'object') - for (i in objectStores[obs].indexes) + for (let i in objectStores[obs].indexes) objectStore.createIndex(i, i, objectStores[obs].indexes[i] || {}); } + if (version) + removeStores.forEach(obs => db.deleteObjectStore(obs)); } idb.onsuccess = (event) => { var db = event.target.result; if (JSON.stringify(Object.values(db.objectStoreNames).sort()) === JSON - .stringify(Object.keys( - objectStores).sort())) + .stringify(Object.keys(objectStores).sort())) resolve("Initiated IndexedDB"); else { - Object.values(db.objectStoreNames).forEach(obs => delete objectStores[obs]) - this.initDB(dbName, objectStores, db.version + 1) + let removeObs = []; + Object.values(db.objectStoreNames).forEach(obs => { + if (obs in objectStores) + delete objectStores[obs] + else + removeObs.push(obs) + }) + this.initDB(dbName, objectStores, db.version + 1, removeObs) .then(result => resolve(result)) .catch(error => reject(error)) }