diff options
Diffstat (limited to 'extension/background/db.js')
-rw-r--r-- | extension/background/db.js | 35 |
1 files changed, 32 insertions, 3 deletions
diff --git a/extension/background/db.js b/extension/background/db.js index b52ee457a..f6d81d9ac 100644 --- a/extension/background/db.js +++ b/extension/background/db.js @@ -1,5 +1,34 @@ +"use strict"; +const DB_NAME = "taler"; +const DB_VERSION = 1; /** - * Declarations and helpers for - * things that are stored in the wallet's - * database. + * Return a promise that resolves + * to the taler wallet db. */ +function openTalerDb() { + return new Promise((resolve, reject) => { + let req = indexedDB.open(DB_NAME, DB_VERSION); + req.onerror = (e) => { + reject(e); + }; + req.onsuccess = (e) => { + resolve(req.result); + }; + req.onupgradeneeded = (e) => { + let db = req.result; + console.log("DB: upgrade needed: oldVersion = " + e.oldVersion); + switch (e.oldVersion) { + case 0: + let mints = db.createObjectStore("mints", { keyPath: "baseUrl" }); + mints.createIndex("pubKey", "keys.master_public_key"); + db.createObjectStore("reserves", { keyPath: "reserve_pub" }); + db.createObjectStore("denoms", { keyPath: "denomPub" }); + let coins = db.createObjectStore("coins", { keyPath: "coinPub" }); + coins.createIndex("mintBaseUrl", "mintBaseUrl"); + db.createObjectStore("transactions", { keyPath: "contractHash" }); + db.createObjectStore("precoins", { keyPath: "coinPub", autoIncrement: true }); + break; + } + }; + }); +} |