From 9d25772b536349734557f2e551b5362e4927a6e2 Mon Sep 17 00:00:00 2001 From: barisusakli Date: Sat, 27 Sep 2014 15:48:16 -0400 Subject: [PATCH] added sortedSetIncrBy --- src/database/level/sorted.js | 4 ++++ src/database/mongo/sorted.js | 14 ++++++++++++++ src/database/redis/sorted.js | 4 ++++ 3 files changed, 22 insertions(+) diff --git a/src/database/level/sorted.js b/src/database/level/sorted.js index 115409cae8..b974c1a981 100644 --- a/src/database/level/sorted.js +++ b/src/database/level/sorted.js @@ -292,4 +292,8 @@ module.exports = function(db, module) { callback(null, returnData); }); } + + module.sortedSetIncrBy = function(key, increment, value, callback) { + throw new Error('not implemented'); + }; }; \ No newline at end of file diff --git a/src/database/mongo/sorted.js b/src/database/mongo/sorted.js index 577ed9d2d1..195de65adf 100644 --- a/src/database/mongo/sorted.js +++ b/src/database/mongo/sorted.js @@ -410,4 +410,18 @@ module.exports = function(db, module) { callback(null, data); }); } + + module.sortedSetIncrBy = function(key, increment, value, callback) { + callback = callback || helpers.noop; + if (!key) { + return callback(); + } + var data = {}; + value = helpers.fieldToString(value); + data['score'] = parseInt(increment, 10); + + db.collection('objects').findAndModify({_key: key, value: value}, {}, {$inc: data}, {new:true, upsert:true}, function(err, result) { + callback(err, result ? result[value] : null); + }); + }; }; \ No newline at end of file diff --git a/src/database/redis/sorted.js b/src/database/redis/sorted.js index 4a9974cd9f..185fb3d420 100644 --- a/src/database/redis/sorted.js +++ b/src/database/redis/sorted.js @@ -211,4 +211,8 @@ module.exports = function(redisClient, module) { callback(err, results ? results[1] : null); }); } + + module.sortedSetIncrBy = function(key, increment, value, callback) { + redisClient.zincrby(key, increment, value, callback); + }; }; \ No newline at end of file