diff --git a/lib/plugins.js b/lib/plugins.js index ef303bce..fa911f85 100644 --- a/lib/plugins.js +++ b/lib/plugins.js @@ -785,14 +785,12 @@ exports.fetchPhoneTx = function fetchPhoneTx (phone) { }) } -exports.fetchTx = db.fetchTx - exports.requestDispense = function requestDispense (tx) { return db.addDispenseRequest(tx) } +exports.fetchTx = db.fetchTx exports.cachedResponse = db.cachedResponse - exports.cacheResponse = db.cacheResponse function sweepHD (row) { diff --git a/lib/postgresql_interface.js b/lib/postgresql_interface.js index 77f984c7..b87b74a7 100644 --- a/lib/postgresql_interface.js +++ b/lib/postgresql_interface.js @@ -231,7 +231,7 @@ exports.addDispenseRequest = function addDispenseRequest (tx) { const sql2 = 'insert into cash_out_actions (cash_out_txs_id, action) values ($1, $2)' return db.none(sql2, [tx.id, 'dispenseRequested']) - .then(() => ({dispense: true})) + .then(() => ({dispense: true, txId: tx.id})) }) } @@ -408,6 +408,7 @@ exports.cachedResponse = function (deviceId, txId, path, method) { .then(() => ({})) .catch(err => { if (!isUniqueViolation(err)) throw err + console.log('DEBUG22: %j', err) return db.one(sql, values) .then(row => ({body: row.body})) }) diff --git a/lib/routes.js b/lib/routes.js index 3566a3da..08fffafe 100644 --- a/lib/routes.js +++ b/lib/routes.js @@ -285,25 +285,38 @@ function waitForDispense (req, res) { function dispense (req, res) { const tx = req.body.tx + const txId = tx.id const deviceId = getDeviceId(req) - return cachedResponse(deviceId, tx.id, req) - .then(r => { + console.log('DEBUG17') + + return cachedResponse(deviceId, txId, req) + .then(cached => { + console.log('DEBUG18: %j', cached) + // Cache hit - if (r.body && r.body.pendingRequest) return res.sendStatus(409) - if (r.body) res.json(r.body) + if (cached && cached.pendingRequest) return res.sendStatus(409) + console.log('DEBUG18.5') + if (cached) res.json(cached) + + console.log('DEBUG19') // No cache hit return plugins.requestDispense(tx) - .then(r => { - return cacheResponse(req, r) - .then(() => res.json(r)) + .then(dispenseRec => { + console.log('DEBUG20: %j', dispenseRec) + + return cacheResponse(deviceId, txId, req, dispenseRec) + .then(() => res.json(dispenseRec)) }) .catch(err => { + console.log('DEBUG21') + logger.error(err) res.sendStatus(500) }) }) + .catch(err => logger.error(err)) } function init (localConfig) {