From: Benjamin Auder Date: Thu, 19 Mar 2020 15:47:28 +0000 (+0100) Subject: Fix DBOpenRequest.onupgradeneeded X-Git-Url: https://git.auder.net/js/current/doc/common.css?a=commitdiff_plain;h=bee36510477b04dee500a9a624584544b9c8bdb2;p=vchess.git Fix DBOpenRequest.onupgradeneeded --- diff --git a/client/src/utils/compgameStorage.js b/client/src/utils/compgameStorage.js index a5c58af1..a8bcaa2a 100644 --- a/client/src/utils/compgameStorage.js +++ b/client/src/utils/compgameStorage.js @@ -27,7 +27,11 @@ function dbOperation(callback) { DBOpenRequest.onupgradeneeded = function(event) { let db = event.target.result; - db.createObjectStore("compgames", { keyPath: "vname" }); + let upgradeTransaction = event.target.transaction; + if (!db.objectStoreNames.contains("compgames")) + db.createObjectStore("compgames", { keyPath: "vname" }); + else + upgradeTransaction.objectStore("compgames"); }; } diff --git a/client/src/utils/gameStorage.js b/client/src/utils/gameStorage.js index fc179f19..514448b0 100644 --- a/client/src/utils/gameStorage.js +++ b/client/src/utils/gameStorage.js @@ -34,11 +34,18 @@ function dbOperation(callback) { DBOpenRequest.onupgradeneeded = function(event) { let db = event.target.result; - let objectStore = db.createObjectStore("games", { keyPath: "id" }); - // To sarch games by score (useful for running games) - objectStore.createIndex("score", "score", { unique: false }); - // To search by date intervals. Two games cannot start at the same time - objectStore.createIndex("created", "created", { unique: true }); + let upgradeTransaction = event.target.transaction; + let objectStore = undefined; + if (!db.objectStoreNames.contains("games")) + objectStore = db.createObjectStore("games", { keyPath: "id" }); + else + objectStore = upgradeTransaction.objectStore("games"); + if (!objectStore.indexNames.contains("score")) + // To sarch games by score (useful for running games) + objectStore.createIndex("score", "score", { unique: false }); + if (!objectStore.indexNames.contains("created")) + // To search by date intervals. Two games cannot start at the same time + objectStore.createIndex("created", "created", { unique: true }); }; }