recreate idb with missing stores

This commit is contained in:
tophf 2022-05-31 15:56:08 +03:00
parent 97520be9b2
commit cda6e4fb9e

View File

@ -120,7 +120,7 @@ const db = (() => {
function open(name) { function open(name) {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
const request = indexedDB.open(name, 2); const request = indexedDB.open(name, 2);
request.onsuccess = () => resolve(request.result); request.onsuccess = e => resolve(create(e));
request.onerror = reject; request.onerror = reject;
request.onupgradeneeded = create; request.onupgradeneeded = create;
}); });
@ -129,12 +129,22 @@ const db = (() => {
function create(event) { function create(event) {
/** @type IDBDatabase */ /** @type IDBDatabase */
const idb = event.target.result; const idb = event.target.result;
const sn = getStoreName(idb.name); const dbName = idb.name;
const sn = getStoreName(dbName);
if (!idb.objectStoreNames.contains(sn)) { if (!idb.objectStoreNames.contains(sn)) {
idb.createObjectStore(sn, ID_AS_KEY[idb.name] ? { if (event.type === 'success') {
idb.close();
return new Promise(resolve => {
indexedDB.deleteDatabase(dbName).onsuccess = () => {
resolve(open(dbName));
};
});
}
idb.createObjectStore(sn, ID_AS_KEY[dbName] ? {
keyPath: 'id', keyPath: 'id',
autoIncrement: true, autoIncrement: true,
} : undefined); } : undefined);
} }
return idb;
} }
})(); })();