optimize fetching of tx proposals for history
This commit is contained in:
parent
5d5f887edb
commit
82e02e2d49
|
@ -2778,26 +2778,47 @@ WalletService.prototype.getTxHistory = function(opts, cb) {
|
||||||
var from = opts.skip || 0;
|
var from = opts.skip || 0;
|
||||||
var to = from + opts.limit;
|
var to = from + opts.limit;
|
||||||
|
|
||||||
async.parallel([
|
|
||||||
|
async.waterfall([
|
||||||
|
|
||||||
function(next) {
|
function(next) {
|
||||||
getNormalizedTxs(addresses, from, to, next);
|
getNormalizedTxs(addresses, from, to, next);
|
||||||
},
|
},
|
||||||
function(next) {
|
function(txs, next) {
|
||||||
self.storage.fetchTxs(self.walletId, {}, next);
|
// Fetch all proposals in [t - 7 days, t + 1 day]
|
||||||
},
|
var minTs = _.min(txs.items, 'time').time - 7 * 24 * 3600;
|
||||||
function(next) {
|
var maxTs = _.max(txs.items, 'time').time + 1 * 24 * 3600;
|
||||||
self.storage.fetchTxNotes(self.walletId, {}, next);
|
|
||||||
|
async.parallel([
|
||||||
|
|
||||||
|
function(done) {
|
||||||
|
self.storage.fetchTxs(self.walletId, {
|
||||||
|
minTs: minTs,
|
||||||
|
maxTs: maxTs
|
||||||
|
}, done);
|
||||||
|
},
|
||||||
|
function(done) {
|
||||||
|
self.storage.fetchTxNotes(self.walletId, {
|
||||||
|
minTs: minTs
|
||||||
|
}, done);
|
||||||
|
},
|
||||||
|
], function(err, res) {
|
||||||
|
return next(err, {
|
||||||
|
txs: txs,
|
||||||
|
txps: res[0],
|
||||||
|
notes: res[1]
|
||||||
|
});
|
||||||
|
});
|
||||||
},
|
},
|
||||||
], function(err, res) {
|
], function(err, res) {
|
||||||
if (err) return cb(err);
|
if (err) return cb(err);
|
||||||
|
|
||||||
var finalTxs = decorate(res[0].items, addresses, res[1], res[2]);
|
var finalTxs = decorate(res.txs.items, addresses, res.txps, res.notes);
|
||||||
|
|
||||||
if (res[0].fromCache)
|
if (res.txs.fromCache)
|
||||||
log.debug("History from cache for:", self.walletId, from, to);
|
log.debug("History from cache for:", self.walletId, from, to);
|
||||||
|
|
||||||
return cb(null, finalTxs, !!res[0].fromCache);
|
return cb(null, finalTxs, !!res.txs.fromCache);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
|
@ -5619,7 +5619,7 @@ describe('Wallet service', function() {
|
||||||
txid: '1',
|
txid: '1',
|
||||||
confirmations: 1,
|
confirmations: 1,
|
||||||
fees: 100,
|
fees: 100,
|
||||||
time: 1,
|
time: 12345,
|
||||||
inputs: [{
|
inputs: [{
|
||||||
address: mainAddresses[0].address,
|
address: mainAddresses[0].address,
|
||||||
amount: 500,
|
amount: 500,
|
||||||
|
@ -5638,7 +5638,7 @@ describe('Wallet service', function() {
|
||||||
tx.action.should.equal('sent');
|
tx.action.should.equal('sent');
|
||||||
tx.amount.should.equal(400);
|
tx.amount.should.equal(400);
|
||||||
tx.fees.should.equal(100);
|
tx.fees.should.equal(100);
|
||||||
tx.time.should.equal(1);
|
tx.time.should.equal(12345);
|
||||||
done();
|
done();
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
@ -5648,7 +5648,7 @@ describe('Wallet service', function() {
|
||||||
txid: '1',
|
txid: '1',
|
||||||
confirmations: 1,
|
confirmations: 1,
|
||||||
fees: 100,
|
fees: 100,
|
||||||
time: 1,
|
time: Date.now() / 1000,
|
||||||
inputs: [{
|
inputs: [{
|
||||||
address: mainAddresses[0].address,
|
address: mainAddresses[0].address,
|
||||||
amount: 500,
|
amount: 500,
|
||||||
|
@ -5715,7 +5715,7 @@ describe('Wallet service', function() {
|
||||||
txid: txp.txid,
|
txid: txp.txid,
|
||||||
confirmations: 1,
|
confirmations: 1,
|
||||||
fees: 5460,
|
fees: 5460,
|
||||||
time: 1,
|
time: Date.now() / 1000,
|
||||||
inputs: [{
|
inputs: [{
|
||||||
address: tx.inputs[0].address,
|
address: tx.inputs[0].address,
|
||||||
amount: utxos[0].satoshis,
|
amount: utxos[0].satoshis,
|
||||||
|
|
Loading…
Reference in New Issue