testing/fixing

This commit is contained in:
Josh Harvey 2016-05-09 03:15:55 +03:00
parent 59e93445ec
commit 1df6fe6ed1
5 changed files with 77 additions and 67 deletions

View file

@ -83,7 +83,7 @@ exports.recordBill = function recordBill (session, rec, cb) {
rec.toAddress,
session.id,
rec.deviceTime,
rec.cryptoAtoms,
rec.cryptoAtoms.toString(),
rec.fiat
]
@ -227,7 +227,7 @@ exports.pendingTxs = function pendingTxs (timeoutMS, cb) {
var values = [timeoutS]
query(client, sql, values, function (err, results) {
done()
cb(err, normalizeTxs(results))
cb(err, normalizeTxs(results.rows))
})
})
}
@ -299,7 +299,7 @@ function insertTx (client, session, incoming, tx, cryptoAtoms, fiat, stage,
incoming,
session.fingerprint,
tx.toAddress,
cryptoAtoms,
cryptoAtoms.toString(),
tx.currencyCode,
tx.cryptoCode,
fiat,
@ -490,12 +490,16 @@ function insertDispense (client, session, tx, cartridges, transactionId, cb) {
exports.addIncomingPhone = function addIncomingPhone (session, tx, cb) {
var sql = 'UPDATE transactions SET phone=$1 ' +
'WHERE incoming=$2 AND device_fingerprint=$3 AND session_id=$4'
connect(function (cerr, client, done) {
if (cerr) return cb(cerr)
var values = [tx.phone, true, session.fingerprint, session.id]
query(client, sql, values, function (err) {
done(err)
cb(err)
return new Promise((resolve, reject) => {
connect(function (cerr, client, done) {
if (cerr) return reject(cerr)
var values = [tx.phone, true, session.fingerprint, session.id]
query(client, sql, values, function (err) {
done(err)
if (err) return reject(err)
resolve()
})
})
})
}
@ -518,56 +522,64 @@ function normalizeTxs (txs) {
})
}
exports.fetchPhoneTxs = function fetchPhoneTxs (phone, dispenseTimeout, cb) {
exports.fetchPhoneTxs = function fetchPhoneTxs (phone, dispenseTimeout) {
var sql = 'SELECT * FROM transactions ' +
'WHERE phone=$1 AND dispensed=$2 ' +
'AND (EXTRACT(EPOCH FROM (now() - created))) * 1000 < $1'
connect(function (cerr, client, done) {
if (cerr) return cb(cerr)
query(client, sql, [phone, false, dispenseTimeout], function (err, results) {
done()
if (err) return cb(err)
cb(null, normalizeTxs(results.rows))
return new Promise((resolve, reject) => {
connect(function (cerr, client, done) {
if (cerr) return reject(cerr)
query(client, sql, [phone, false, dispenseTimeout], function (err, results) {
done()
if (err) return reject(err)
resolve(normalizeTxs(results.rows))
})
})
})
}
exports.fetchTx = function fetchTx (session, cb) {
exports.fetchTx = function fetchTx (session) {
var sql = 'SELECT * FROM transactions ' +
'WHERE device_fingerprint=$1 AND session_id=$2 ' +
'ORDER BY created'
'AND stage=$3 AND authority=$4'
connect(function (cerr, client, done) {
if (cerr) return cb(cerr)
query(client, sql, [session.fingerprint, session.id], function (err, results) {
done()
if (err) return cb(err)
cb(null, normalizeTxs(results.rows))
return new Promise((resolve, reject) => {
connect(function (cerr, client, done) {
if (cerr) return reject(cerr)
var values = [session.fingerprint, session.id, 'initial_request', 'pending']
query(client, sql, values, function (err, results) {
done()
if (err) return reject(err)
resolve(normalizeTxs(results.rows)[0])
})
})
})
}
exports.addDispenseRequest = function addDispenseRequest (session, tx, cb) {
connect(function (cerr, client, done) {
if (cerr) return
exports.addDispenseRequest = function addDispenseRequest (session, tx) {
return new Promise((resolve, reject) => {
connect(function (cerr, client, done) {
if (cerr) return reject(cerr)
const originalSession = {id: tx.sessionId, fingerprint: session.fingerprint}
async.waterfall([
async.apply(updateDispense, client, true),
async.apply(insertIncoming, client, originalSession, tx, 0, tx.fiat,
'dispense', 'pending')
], function (err) {
done()
if (err) logger.error(err)
const originalSession = {id: tx.sessionId, fingerprint: session.fingerprint}
async.waterfall([
async.apply(updateDispense, client, originalSession, true),
async.apply(insertIncoming, client, originalSession, tx, 0, tx.fiat,
'dispense', 'pending')
], function (err) {
done()
if (err) return reject(err)
resolve()
})
})
})
}
function updateDispense (client, session, dispensed, cb) {
var sql = 'UPDATE transactions SET dispense=$1 ' +
var sql = 'UPDATE transactions SET dispensed=$1 ' +
'WHERE stage=$2 AND authority=$3 AND device_fingerprint=$4 AND session_id=$5'
var values = [dispensed, 'initial_request', 'deposit', session.fingerprint, session.id]
var values = [dispensed, 'initial_request', 'pending', session.fingerprint, session.id]
query(client, sql, values, function (err) {
cb(err)
})
@ -652,18 +664,24 @@ exports.machineEvents = function machineEvents (cb) {
})
}
function singleQuotify (item) { return '\'' + item + '\'' }
exports.fetchOpenTxs = function fetchOpenTxs (statuses, age, cb) {
var sql = 'SELECT *, (EXTRACT(EPOCH FROM (now() - created))) * 1000 AS age ' +
var _statuses = '(' + statuses.map(singleQuotify).join(',') + ')'
var sql = 'SELECT * ' +
'FROM transactions ' +
'WHERE incoming=$1 age<$2 AND status IN $3'
'WHERE incoming=$1 AND ((EXTRACT(EPOCH FROM (now() - created))) * 1000)<$2 ' +
'AND stage=$3 AND authority=$4 ' +
'AND status IN ' + _statuses
connect(function (cerr, client, done) {
if (cerr) return cb(cerr)
query(client, sql, [true, age, statuses], function (err, results) {
query(client, sql, [true, age, 'initial_request', 'pending'], function (err, results) {
done()
if (err) return cb(err)
cb(null, normalizeTxs(results))
cb(null, normalizeTxs(results.rows))
})
})
}