improve transaction expiration

This commit is contained in:
Josh Harvey 2016-05-10 14:03:13 +03:00
parent 7f33e87c21
commit 996ebd395b
3 changed files with 27 additions and 14 deletions

View file

@ -527,8 +527,8 @@ function normalizeTxs (txs) {
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 ' +
'AND stage=$3 AND authority=$4 AND incoming=$5'
'AND (EXTRACT(EPOCH FROM (COALESCE(confirmation_time, now()) - created))) * 1000 < $3 ' +
'AND stage=$4 AND authority=$5 AND incoming=$6'
return new Promise((resolve, reject) => {
connect(function (cerr, client, done) {
@ -713,19 +713,29 @@ exports.fetchUnnotifiedTxs = function fetchUnnotifiedTxs (age, waitPeriod, cb) {
})
}
exports.updateTxStatus = function updateTxStatus (tx, status, cb) {
var sql = 'UPDATE transactions SET status=$1 WHERE id=$2'
connect(function (cerr, client, done) {
if (cerr) return cb(cerr)
var values = [status, tx.id]
query(client, sql, values, function (err) {
done(err)
cb(err)
function pquery (sql, values) {
return new Promise((resolve, reject) => {
connect(function (cerr, client, done) {
if (cerr) return reject(cerr)
query(client, sql, values, function (err, results) {
done(err)
if (err) return reject(err)
resolve(results)
})
})
})
}
exports.updateTxStatus = function updateTxStatus (tx, status, confirm) {
var sql = confirm
? 'UPDATE transactions SET status=$1, confirmation_time=now() WHERE id=$2'
: 'UPDATE transactions SET status=$1 WHERE id=$2'
var values = [status, tx.id]
return pquery(sql, values)
}
exports.updateRedeem = function updateRedeem (session, cb) {
var sql = 'UPDATE transactions SET redeem=$1 ' +
'WHERE incoming=$2 AND device_fingerprint=$3 AND session_id=$4 ' +