diff --git a/src/database/level/sorted.js b/src/database/level/sorted.js index d262af89c2..115409cae8 100644 --- a/src/database/level/sorted.js +++ b/src/database/level/sorted.js @@ -151,6 +151,14 @@ module.exports = function(db, module) { }); }; + module.sortedSetsRanks = function(keys, values, callback) { + throw new Error('not implemented'); + }; + + module.sortedSetRanks = function(key, values, callback) { + throw new Error('not implemented'); + }; + module.sortedSetRevRank = function(key, value, callback) { module.getListRange(key, 0, -1, function(err, list) { for (var i = list.length - 1, ii=0; i > ii; i--) { diff --git a/src/database/mongo/sorted.js b/src/database/mongo/sorted.js index 1f95ba2448..577ed9d2d1 100644 --- a/src/database/mongo/sorted.js +++ b/src/database/mongo/sorted.js @@ -264,6 +264,21 @@ module.exports = function(db, module) { }, callback); }; + module.sortedSetRanks = function(key, values, callback) { + module.getSortedSetRange(key, 0, -1, function(err, sortedSet) { + if (err) { + return callback(err); + } + + var result = values.map(function(value) { + var index = sortedSet.indexOf(value.toString()); + return index !== -1 ? index : null; + }); + + callback(null, result); + }); + }; + module.sortedSetScore = function(key, value, callback) { if (!key) { return callback(); diff --git a/src/database/redis/sorted.js b/src/database/redis/sorted.js index 2df108cf9b..4a9974cd9f 100644 --- a/src/database/redis/sorted.js +++ b/src/database/redis/sorted.js @@ -129,6 +129,14 @@ module.exports = function(redisClient, module) { multi.exec(callback); }; + module.sortedSetRanks = function(key, values, callback) { + var multi = redisClient.multi(); + for(var i=0; i