infinite scrolling for topics in category view, changed how topics are stored in categories, using sorted sets instead of sets now, if you update to this commit run node app --upgrade to upgrade the redis schema, #141

This commit is contained in:
Baris Soner Usakli
2013-08-09 20:03:19 -04:00
parent 04e0d075ec
commit 1cc8214d16
9 changed files with 186 additions and 61 deletions

View File

@@ -17,8 +17,9 @@ var RDB = require('./redis.js'),
category_description = categoryData.description;
function getTopicIds(next) {
Categories.getTopicIds(category_id, next);
Categories.getTopicIds(category_id, 0, 19, next);
}
function getActiveUsers(next) {
Categories.getActiveUsers(category_id, next);
}
@@ -44,15 +45,7 @@ var RDB = require('./redis.js'),
function getTopics(next) {
topics.getTopicsByTids(tids, current_user, function(topicsData) {
// Float pinned topics to the top
topicsData = topicsData.sort(function(a, b) {
if (a.pinned !== b.pinned) return b.pinned - a.pinned;
else {
return b.lastposttime - a.lastposttime;
}
});
next(null, topicsData);
}, category_id);
}
@@ -89,8 +82,16 @@ var RDB = require('./redis.js'),
});
}
Categories.getTopicIds = function(cid, callback) {
RDB.smembers('categories:' + cid + ':tid', callback);
Categories.getCategoryTopics = function(cid, start, stop, uid, callback) {
Categories.getTopicIds(cid, start, stop, function(err, tids) {
topics.getTopicsByTids(tids, uid, function(topicsData) {
callback(topicsData);
}, cid);
});
}
Categories.getTopicIds = function(cid, start, stop, callback) {
RDB.zrevrange('categories:' + cid + ':tid', start, stop, callback);
}
Categories.getActiveUsers = function(cid, callback) {
@@ -144,7 +145,7 @@ var RDB = require('./redis.js'),
}
Categories.isTopicsRead = function(cid, uid, callback) {
RDB.smembers('categories:' + cid + ':tid', function(err, tids) {
RDB.zrange('categories:' + cid + ':tid', 0, -1, function(err, tids) {
topics.hasReadTopics(tids, uid, function(hasRead) {