diff --git a/src/database/mongo.js b/src/database/mongo.js index aaf161ee42..e792d41b1a 100644 --- a/src/database/mongo.js +++ b/src/database/mongo.js @@ -538,21 +538,15 @@ getSortedSetRange(key, start, stop, -1, callback); }; - module.getSortedSetRangeByScore = function(args, callback) { - getSortedSetRangeByScore(args, 1, callback); + module.getSortedSetRangeByScore = function(key, start, count, min, max, callback) { + getSortedSetRangeByScore(key, start, count, min, max, 1, callback); }; - module.getSortedSetRevRangeByScore = function(args, callback) { - getSortedSetRangeByScore(args, -1, callback); + module.getSortedSetRevRangeByScore = function(key, start, count, max, min, callback) { + getSortedSetRangeByScore(key, start, count, min, max, -1, callback); }; - function getSortedSetRangeByScore(args, sort, callback) { - var key = args[0], - max = (args[1] === '+inf') ? Number.MAX_VALUE : args[1], - min = args[2], - start = args[4], - count = args[5]; - + function getSortedSetRangeByScore(key, start, count, min, max, sort, callback) { if(parseInt(count, 10) === -1) { count = 0; } diff --git a/src/database/redis.js b/src/database/redis.js index 90daed3e74..06e21583a3 100644 --- a/src/database/redis.js +++ b/src/database/redis.js @@ -359,11 +359,13 @@ redisClient.zrevrange(key, start, stop, callback); }; - module.getSortedSetRangeByScore = function(args, callback) { + module.getSortedSetRangeByScore = function(key, start, count, min, max, callback) { + var args = [key, min, max, 'LIMIT', start, count]; redisClient.zrangebyscore(args, callback); }; - module.getSortedSetRevRangeByScore = function(args, callback) { + module.getSortedSetRevRangeByScore = function(key, start, count, max, min, callback) { + var args = [key, max, min, 'LIMIT', start, count]; redisClient.zrevrangebyscore(args, callback); }; diff --git a/src/posts.js b/src/posts.js index 0fd976995d..d35cd12e5d 100644 --- a/src/posts.js +++ b/src/posts.js @@ -210,7 +210,7 @@ var db = require('./database'), var count = parseInt(stop, 10) === -1 ? stop : stop - start + 1; - db.getSortedSetRevRangeByScore(['posts:pid', '+inf', Date.now() - since, 'LIMIT', start, count], function(err, pids) { + db.getSortedSetRevRangeByScore('posts:pid', start, count, Infinity, Date.now() - since, function(err, pids) { if(err) { return callback(err); } diff --git a/src/topics/recent.js b/src/topics/recent.js index bb51800785..255c65a388 100644 --- a/src/topics/recent.js +++ b/src/topics/recent.js @@ -30,7 +30,7 @@ module.exports = function(Topics) { var count = parseInt(end, 10) === -1 ? end : end - start + 1; - db.getSortedSetRevRangeByScore(['topics:recent', '+inf', Date.now() - since, 'LIMIT', start, count], callback); + db.getSortedSetRevRangeByScore('topics:recent', start, count, Infinity, Date.now() - since, callback); }; }; diff --git a/src/user/notifications.js b/src/user/notifications.js index df3096b8e8..3b4542a787 100644 --- a/src/user/notifications.js +++ b/src/user/notifications.js @@ -114,7 +114,7 @@ var async = require('async'), UserNotifications.getDailyUnread = function(uid, callback) { var now = Date.now(), yesterday = now - (1000*60*60*24); // Approximate, can be more or less depending on time changes, makes no difference really. - db.getSortedSetRangeByScore(['uid:' + uid + ':notifications:unread', yesterday, now], function(err, nids) { + db.getSortedSetRangeByScore('uid:' + uid + ':notifications:unread', 0, 20, yesterday, now, function(err, nids) { async.map(nids, function(nid, next) { notifications.get(nid, uid, function(notif_data) { next(null, notif_data); diff --git a/tests/database.js b/tests/database.js index de22628e2d..8a0cbe7b34 100644 --- a/tests/database.js +++ b/tests/database.js @@ -127,8 +127,7 @@ describe('Test database', function() { } function getSortedSetRevRangeByScore(callback) { - var args = ['sortedSet2', '+inf', 100, 'LIMIT', 0, 10]; - db.getSortedSetRevRangeByScore(args, function(err, data) { + db.getSortedSetRevRangeByScore('sortedSet2', 0, 10, Infinity, 100, function(err, data) { callback(err, {'getSortedSetRevRangeByScore': data}); }); }