diff --git a/lib/plugins.js b/lib/plugins.js index 7eb7ca33..c2ccc0bc 100644 --- a/lib/plugins.js +++ b/lib/plugins.js @@ -191,7 +191,7 @@ exports.logEvent = function event(session, rawEvent) { db.recordDeviceEvent(session, rawEvent); }; -function buildCartridges(counts) { +function buildCartridges(rec) { var cartridges = cachedConfig.exchanges.settings.cartridges; var virtualCartridges = cachedConfig.exchanges.settings.virtualCartridges; if (!cartridges) return null; @@ -199,14 +199,15 @@ function buildCartridges(counts) { cartridges: [ { denomination: cartridges[0], - count: counts[0] + count: rec.counts[0] }, { denomination: cartridges[1], - count: counts[1] - }, + count: rec.counts[1] + } ], - virtualCartridges: virtualCartridges + virtualCartridges: virtualCartridges, + id: rec.id }; } diff --git a/lib/postgresql_interface.js b/lib/postgresql_interface.js index a1eb1c81..68d67f42 100644 --- a/lib/postgresql_interface.js +++ b/lib/postgresql_interface.js @@ -480,51 +480,11 @@ exports.addInitialIncoming = function addInitialIncoming(session, tx, cb) { }); }; -function lastDispenseCount(client, session, transactionId, cb) { - var sql = 'SELECT count1, count2 FROM dispenses ' + - 'WHERE device_fingerprint=$1 ' + - 'ORDER BY id DESC LIMIT 1'; - client.query(sql, [session.fingerprint], function(err, results) { - if (err) return cb(err); - if (results.rows.length === 0) return cb(null, transactionId, [0, 0]); - cb(null, transactionId, [results.rows[0].count1, results.rows[0].count2]); - }); -} - -function insertDispense(client, session, tx, transactionId, counts, cb) { - var fields = [ - 'device_fingerprint', 'transaction_id', - 'dispense1', 'reject1', 'count1', - 'dispense2', 'reject2', 'count2', - 'refill', 'error' - ]; - - var sql = getInsertQuery('dispenses', fields, true); - - var dispense1 = tx.billDistribution[0].actualDispense; - var dispense2 = tx.billDistribution[1].actualDispense; - var reject1 = tx.billDistribution[0].rejected; - var reject2 = tx.billDistribution[1].rejected; - var count1 = Math.max(counts[0] - (dispense1 + reject1), 0); - var count2 = Math.max(counts[1] - (dispense2 + reject2), 0); - var values = [ - session.fingerprint, transactionId, - dispense1, reject1, count1, dispense2, reject2, count2, - false, tx.error - ]; - client.query(sql, values, cb); -} - exports.addDispense = function addDispense(session, tx) { connect(function(cerr, client, done) { if (cerr) return; - async.waterfall([ - async.apply(insertIncoming, client, session, tx, 0, tx.fiat, - 'dispense', 'authorized'), - async.apply(lastDispenseCount, client, session), - async.apply(insertDispense, client, session, tx) - ], function(err) { + insertIncoming(client, session, tx, 0, tx.fiat, 'dispense', 'authorized', function () { done(); if (err) logger.error(err); }); @@ -534,7 +494,7 @@ exports.addDispense = function addDispense(session, tx) { exports.cartridgeCounts = function cartridgeCounts(session, cb) { connect(function(cerr, client, done) { if (cerr) return cb(cerr); - var sql = 'SELECT count1, count2 FROM dispenses ' + + var sql = 'SELECT id, count1, count2 FROM dispenses ' + 'WHERE device_fingerprint=$1 ' + 'ORDER BY id DESC LIMIT 1'; query(client, sql, [session.fingerprint], function(err, results) { @@ -543,7 +503,7 @@ exports.cartridgeCounts = function cartridgeCounts(session, cb) { var counts = results.rows.length === 1 ? [results.rows[0].count1, results.rows[0].count2] : [0, 0]; - cb(null, counts); + cb(null, {id: results.rows[0].id, counts: counts}); }); }); };