diff options
author | Florian Dold <florian.dold@gmail.com> | 2015-12-17 13:35:35 +0100 |
---|---|---|
committer | Florian Dold <florian.dold@gmail.com> | 2015-12-17 13:35:35 +0100 |
commit | 464bbc3762906b3a61ddd85f4c207f140b2b750a (patch) | |
tree | bc3d58a3e5494b8f2ce6c88351c029684bf19f99 /extension/background/db.js | |
parent | b93638b6935e7fb179385cd38a1691372b4c8432 (diff) | |
download | wallet-core-464bbc3762906b3a61ddd85f4c207f140b2b750a.tar.xz |
Move interfaces for db types to extra file.
Diffstat (limited to 'extension/background/db.js')
-rw-r--r-- | extension/background/db.js | 225 |
1 files changed, 5 insertions, 220 deletions
diff --git a/extension/background/db.js b/extension/background/db.js index 9be933d9c..b52ee457a 100644 --- a/extension/background/db.js +++ b/extension/background/db.js @@ -1,220 +1,5 @@ -"use strict"; - -var DB = function () { - let DB = {}; // returned object with exported functions - - let DB_NAME = "taler"; - let DB_VERSION = 1; - - let db = null; - let is_ready = null; - - DB.open = function (onsuccess, onerror) - { - is_ready = false; - - let req = indexedDB.open(DB_NAME, DB_VERSION); - req.onerror = onerror; - req.onsuccess = function (event) - { - db = event.target.result; - is_ready = true; - if (onsuccess) - onsuccess(); - }; - - req.onupgradeneeded = function (event) - { - console.log ("DB: upgrade needed: oldVersion = "+ event.oldVersion); - - db = event.target.result; - db.onerror = onerror; - - switch (event.oldVersion) - { - case 0: // DB does not exist yet - { - let example = {}; - - let mints = db.createObjectStore("mints", { keyPath: "mint_pub" }); - mints.createIndex("name", "name", { unique: true }); - - example.mint = { - mint_pub: "<mint's master pub key>", // length: 32 - name: "Mint One", - url: "https://mint.one/", - }; - - let denoms = db.createObjectStore("denoms", { keyPath: "denom_pub" }); - - example.denom = { - denom_pub: "<denom pub key>", // length: 32 - mint_pub: "<mint's master pub key>", // length: 32 - mint_sig: "<mint's sig>", // length: 64 - withdraw_expiry_time: 1234567890, - deposit_expiry_time: 1234567890, - start_time: 1234567890, - value: { - value: 1, - fraction: 230000, // 0..999999 - currency: "EUR", - }, - fee: { - withdraw: { - value: 0, - fraction: 100000, - currency: "EUR", - }, - deposit: { - value: 0, - fraction: 100000, - currency: "EUR", - }, - refresh: { - value: 0, - fraction: 100000, - currency: "EUR", - }, - }, - }; - - let reserves = db.createObjectStore("reserves", { keyPath: "reserve_pub"}); - example.reserve = { - reserve_pub: "<pub key>", - reserve_priv: "<priv key>", - mint_pub: "<mint's master pub key>", - initial: { - value: 1, - fraction: 230000, - currency: "EUR", - }, - current: { - value: 1, - fraction: 230000, - currency: "EUR", - blind_session_pub: "<pub key>", - status_sig: "<sig>", - }, - }; - - let withdrawals = db.createObjectStore("withdrawals", { keyPath: "id", autoIncrement: true }); - example.withdrawal = { - id: 1, // generated - reserve_pub: "<pub key>", - reserve_sig: "<sig>", - denom_pub: "<pub key", - blind_session_pub: "<pub key>", - blind_priv: "<priv key>", - coin_pub: "<pub key>", - coin_priv: "<priv key>", - coin_ev: "", - }; - - let coins = db.createObjectStore("coins", { keyPath: "coin_pub" }); - example.coin = { - // coin either has a withdraw_id or refresh_id - // or it is imported in which case both are null - withdraw_id: 1, // can be null - refresh_id: null, // can be null - is_refreshed: false, - denom_pub: "<pub key>", - coin_pub: "<pub key>", - coin_priv: "<priv key>", - denom_sig: "<sig>", - spent: { - value: 1, - fraction: 230000, - }, - transactions: [ 123, 456 ], // list of transaction IDs where this coin was used - }; - - let transactions = db.createObjectStore("transactions", { keyPath: "id", autoIncrement: true }); - example.transaction = { - id: 1, // generated - wire_hash: "<hash>", - value: { - value: 1, - fraction: 230000, - currency: "EUR", - }, - contract: "<JSON>", - is_checkout_done: true, - is_confirmed: true, - fulfillment_url: "https://some.shop/transaction/completed", - }; - - let refresh = db.createObjectStore("refresh"); - example.refresh = { - // TODO - }; - } - } - - is_ready = true; - if (onsuccess) - onsuccess(); - } - }; - - - DB.close = function () - { - db.close(); - }; - - - DB.wallet_get = function (onresult, onerror) - { - let wallet = { }; - - let tr = db.transaction([ "coins", "denoms" ], "readonly"); - let coins = tr.objectStore("coins"); - let denoms = tr.objectStore("denoms"); - - let coins_cur = coins.openCursor(); - coins_cur.onerror = onerror; - coins_cur.onsuccess = function () - { - let cur = event.target.result; - if (cur) { - let denom_get = denoms.get(cur.valcue.denom_pub); - denom_get.onerror = onerror; - denom_get.onsuccess = function (event) - { - let denom = event.target.result; - if (denom.currency in wallet) - { - let w = wallet[denom.currency]; - w.value += denom.value; - w.fraction = (w.fraction + denom.fraction) % 1000000; - if (1000000 <= w.fraction + denom.fraction) - w.value++; - } - else - { - wallet[denom.currency] = denom; - } - cur.continue(); - } - } - else // no more entries - { - onresult(wallet); - } - }; - }; - - - DB.transaction_list = function (onresult, onerror) - { - // TODO - }; - - - DB.reserve_list = function (onresult, onerror) - { - // TODO - }; - - return DB; -}(); +/** + * Declarations and helpers for + * things that are stored in the wallet's + * database. + */ |