aboutsummaryrefslogtreecommitdiffstats
path: root/routes
diff options
context:
space:
mode:
authorAdam Soltys <[email protected]>2014-08-22 23:32:42 -0700
committerAdam Soltys <[email protected]>2014-08-22 23:32:42 -0700
commitdec12454289461e6851b3b7328b5a80f56ce4a98 (patch)
tree394b18ad2fe0d875a689e8acee4d918397845300 /routes
parent11390ded587c17ca06535c0826f2d2da94417d93 (diff)
downloadcoinos-server-dec12454289461e6851b3b7328b5a80f56ce4a98.tar.gz
coinos-server-dec12454289461e6851b3b7328b5a80f56ce4a98.zip
Log txids and prevent duplicates
Diffstat (limited to 'routes')
-rw-r--r--routes/transactions.js41
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();
});
});
},