improved db structure

This commit is contained in:
Abhishek Sinha 2018-12-02 21:52:43 +05:30
parent 114aadc4c4
commit 69271aba7b

View File

@ -7885,6 +7885,7 @@
// Need to do: Super Node saves the private keys and sends the BTC address to the requester
// THIS IS VERY DANGEROUS STEP BCOZ BTC PRIVATE KEY DATA CAN BE LEAKED HERE IF ANYTHING GOES WRONG
*****************************************************************************/
params.id = + new Date();
params.status = 1;
params.btc_private_key = generate_btc_keys_for_requester.privateKeyWIF;
params.btc_address = generate_btc_keys_for_requester.address;
@ -7893,7 +7894,7 @@
GET EQUIVALENT BTC HERE IN TERMS OF ORDERED INR I.E 10K, 50K...
******************************************************/
params.bitcoinToBePaid = localbitcoinplusplus.trade.prototype.calculateBTCEquivalentOfCash.call(params.depositing_amount);
let receivedTradeInfo = {...params};
try {
@ -7913,6 +7914,7 @@
data: requester_data
};
} else if (params.product == "INR") {
params.id = + new Date();
params.status = 1;
let receivedTradeInfo = {...params};
@ -8065,7 +8067,7 @@
if (is_valid_order === true) {
this.rpc_job = 'trade_' + this.order_type;
let placeNewOrder = localbitcoinplusplus.rpc.prototype.send_rpc.call(this, this.rpc_job, {
"order_type": this.order_type,
"trader_flo_address": this.user_flo_address,
@ -8184,7 +8186,7 @@
// "receiving_address": this.receiving_address
//Check buyer's INR balance
readDBbyIndex("cash_balances", "trader_flo_address", params.trader_flo_address, function(res) {
readDB("cash_balances", "trader_flo_address", params.trader_flo_address, function(res) {
if(!isNaN(res.cash_balance)) {
let buyer_cash_balance = parseFloat(res.cash_balance);
let buy_price_btc = parseFloat(params.buy_price);
@ -8202,7 +8204,7 @@
updateinDB("cash_balances", res, params.trader_flo_address);
// Increase BTC balance of buyer with extra eqBTC amount of BTC
readDBbyIndex("btc_balances", "trader_flo_address", params.trader_flo_address, function(res) {
readDB("btc_balances", "trader_flo_address", params.trader_flo_address, function(res) {
if (typeof res.btc_balance == "undefined" && !NaN(res.btc_balance)) {
res.btc_balance = parseFloat(res.btc_balance)+eqBTC;
updateinDB("btc_balances", res, params.trader_flo_address);
@ -8211,12 +8213,12 @@
}
});
} else {
throw new Error("Failed to fetch cuurent BTC price.");
throw new Error("Failed to fetch current BTC price.");
}
}
});
params['rand_id'] = Math.floor(Math.random(1, 1000) * 1000);
params['id'] = + new Date();
addDB("buyOrders", params);
callback();
},
@ -8240,7 +8242,7 @@
// Check BTC balance of the seller
console.log(params.trader_flo_address);
readDBbyIndex("btc_balances", "trader_flo_address", params.trader_flo_address, function(res) {
readDB("btc_balances", "trader_flo_address", params.trader_flo_address, function(res) {
if (typeof res.trader_flo_address == "string" && res.trader_flo_address.length>0
&& typeof res.btc_balance == "number" && res.btc_balance>0) {
let seller_btc_balance = parseFloat(res.btc_balance);
@ -8271,7 +8273,7 @@
}
});
params['rand_id'] = Math.floor(Math.random(1, 1000) * 1000);
params['rand_id'] = + new Date();
addDB("sellOrders", params);
callback();
},
@ -8798,7 +8800,6 @@
depositing_amount: 0,
depositor_key_signature: null,
depositor_public_key: null,
//currency: null,
operation_type: null,
order_validator_public_key: null,
product: null,
@ -8807,7 +8808,6 @@
const btc_balances = {
trader_flo_address: null,
btc_address: null,
btc_balance: null
}
@ -8815,10 +8815,16 @@
trader_flo_address: null,
cash_balance: null
}
const system_btc_reserves = {
id: '',
btc_address: null,
balance: null
}
var db;
const DBName = "localbitcoinDB";
var request = window.indexedDB.open(DBName, 1);
var request = window.indexedDB.open(DBName, 2);
request.onerror = function (event) {
//https://stackoverflow.com/questions/13972385/invalidstateerror-while-opening-indexeddb-in-firefox
@ -8834,47 +8840,32 @@
request.onupgradeneeded = function (event) {
var db = event.target.result;
if (!db.objectStoreNames.contains('localbitcoinUser')) {
var objectStore = db.createObjectStore("localbitcoinUser", {
keyPath: "id"
});
var objectStore = db.createObjectStore("localbitcoinUser", {keyPath: "id"});
objectStore.createIndex('myLocalFLOAddress', 'myLocalFLOAddress', { unique: false });
objectStore.put(localbitcoinplusplusObj);
}
if (!db.objectStoreNames.contains('datablocks')) {
var objectStore = db.createObjectStore("datablocks", {
keyPath: "id"
});
var objectStore = db.createObjectStore("datablocks", {keyPath: "id"});
objectStore.put(dataBlock);
}
if (!db.objectStoreNames.contains('buyOrders')) {
var objectStore = db.createObjectStore("buyOrders", {
keyPath: 'trader_flo_address'
});
objectStore.createIndex('trader_flo_address', 'trader_flo_address', { unique: false, multiEntry:true });
var objectStore = db.createObjectStore("buyOrders", {keyPath: 'id'});
objectStore.createIndex('trader_flo_address', 'trader_flo_address', { unique: false });
}
if (!db.objectStoreNames.contains('sellOrders')) {
var objectStore = db.createObjectStore("sellOrders", {
keyPath: 'trader_flo_address'
});
objectStore.createIndex('trader_flo_address', 'trader_flo_address', { unique: false, multiEntry:true });
var objectStore = db.createObjectStore("sellOrders", {keyPath: 'id'});
objectStore.createIndex('trader_flo_address', 'trader_flo_address', { unique: false });
}
if (!db.objectStoreNames.contains('deposit')) {
var objectStore = db.createObjectStore("deposit", {
keyPath: 'trader_flo_address'
});
objectStore.createIndex('trader_flo_address', 'trader_flo_address', { unique: false, multiEntry:true });
var objectStore = db.createObjectStore("deposit", {keyPath: 'id'});
objectStore.createIndex('trader_flo_address', 'trader_flo_address', { unique: false });
}
if (!db.objectStoreNames.contains('btc_balances')) {
var objectStore = db.createObjectStore("btc_balances", {
keyPath: 'trader_flo_address'
});
objectStore.createIndex('trader_flo_address', 'trader_flo_address', { unique: false, multiEntry:true });
var objectStore = db.createObjectStore("btc_balances", {keyPath: 'trader_flo_address'});
}
if (!db.objectStoreNames.contains('cash_balances')) {
var objectStore = db.createObjectStore("cash_balances", {
keyPath: 'trader_flo_address'
});
objectStore.createIndex('trader_flo_address', 'trader_flo_address', { unique: false, multiEntry:true });
var objectStore = db.createObjectStore("cash_balances", {keyPath: 'trader_flo_address'});
}
}
@ -8964,33 +8955,6 @@
}
}
// function updateDeposit(trader_flo_address, updatedObject) {
// const transaction = db.transaction(['deposit'], 'readwrite');
// const objectStore = transaction.objectStore('deposit');
// objectStore.openCursor().onsuccess = function(event) {
// const cursor = event.target.result;
// if (cursor) {
// if (cursor.value.trader_flo_address === trader_flo_address) {
// const updateData = cursor.value;
// for (const key in updatedObject) {
// if (updatedObject.hasOwnProperty(key)) {
// updateData.key = updatedObject[key];
// }
// }
// const request = cursor.update(updateData);
// request.onsuccess = function() {
// console.log();
// };
// };
// cursor.continue();
// } else {
// console.log('Entries displayed.');
// }
// }
// }
function removeinDB(tablename, id) {
var request = db.transaction([tablename], "readwrite")
.objectStore(tablename)
@ -9355,13 +9319,13 @@
removeinDB("deposit", trader_flo_address);
updateinDB("deposit", res, trader_flo_address);
let updateBalanceTableOfUser = {
trader_flo_address: trader_flo_address,
let updateSystemBTCreserve = {
id: + new Date(),
btc_address: BTCAddress,
btc_balance: balance
}
// Periodly update the BTC balance of this trader in balances table
updateinDB("btc_balances", updateBalanceTableOfUser, trader_flo_address);
// Periodly update the BTC balance of this trader in system_btc_reserves table
updateinDB("system_btc_reserves", updateSystemBTCreserve, BTCAddress);
// update balance of user
readDB("localbitcoinUser", "00-01", function(user_data) {