diff options
| author | Adam Soltys <[email protected]> | 2014-08-22 23:32:42 -0700 |
|---|---|---|
| committer | Adam Soltys <[email protected]> | 2014-08-22 23:32:42 -0700 |
| commit | dec12454289461e6851b3b7328b5a80f56ce4a98 (patch) | |
| tree | 394b18ad2fe0d875a689e8acee4d918397845300 /routes | |
| parent | 11390ded587c17ca06535c0826f2d2da94417d93 (diff) | |
| download | coinos-server-dec12454289461e6851b3b7328b5a80f56ce4a98.tar.gz coinos-server-dec12454289461e6851b3b7328b5a80f56ce4a98.zip | |
Log txids and prevent duplicates
Diffstat (limited to 'routes')
| -rw-r--r-- | routes/transactions.js | 41 |
1 files changed, 30 insertions, 11 deletions
diff --git a/routes/transactions.js b/routes/transactions.js index 25d6fc14..83ec441f 100644 --- a/routes/transactions.js +++ b/routes/transactions.js @@ -11,29 +11,48 @@ 'transactions': [] }; return db.lrange("" + user + ":transactions", 0, -1, function(err, transactions) { - var i, process; - process = function(err, t) { + var cb, i, txid; + cb = function(err, t) { + var txid; r.transactions.push(t); if (i >= transactions.length) { res.write(JSON.stringify(r)); return res.end(); } else { - return db.hgetall("" + user + ":transactions:" + transactions[i++], process); + txid = transactions[i++]; + if (parseInt(txid)) { + txid = user + ":transactions:" + txid; + } + return db.hgetall(txid, cb); } }; i = 0; - return db.hgetall("" + user + ":transactions:" + transactions[i++], process); + txid = transactions[i++]; + if (parseInt(txid)) { + txid = user + ":transactions:" + txid; + } + return db.hgetall(txid, cb); }); }, create: function(req, res) { - var user; + var finish, user; user = req.params.user; - return db.incr('transactions', function(err, id) { - return db.hmset("" + user + ":transactions:" + id, req.body, function() { - return db.rpush("" + user + ":transactions", id, function() { - res.write(JSON.stringify(req.body)); - return res.end(); - }); + finish = function() { + res.write(JSON.stringify(req.body)); + return res.end(); + }; + db.watch(req.body.txid); + return db.exists(req.body.txid, function(err, result) { + var multi; + if (result) { + finish(); + return; + } + multi = db.multi(); + multi.hmset(req.body.txid, req.body); + multi.rpush("" + user + ":transactions", req.body.txid); + return multi.exec(function(err, replies) { + return finish(); }); }); }, |
