diff --git a/src/admin/categories.js b/src/admin/categories.js index c5c8212edf..55d398606a 100644 --- a/src/admin/categories.js +++ b/src/admin/categories.js @@ -11,14 +11,17 @@ var RDB = require('./../redis.js'), var slug = cid + '/' + utils.slugify(data.name); RDB.rpush('categories:cid', cid); - // Topic Info - RDB.set('cid:' + cid + ':name', data.name); - RDB.set('cid:' + cid + ':description', data.description); - RDB.set('cid:' + cid + ':icon', data.icon); - RDB.set('cid:' + cid + ':blockclass', data.blockclass); - RDB.set('cid:' + cid + ':slug', slug); - - RDB.set('category:slug:' + slug + ':cid', cid); + RDB.hmset('category:' + cid, { + cid: cid, + name: data.name, + description: data.description, + icon: data.icon, + blockclass: data.blockclass, + slug: slug, + topic_count: 0 + }); + + RDB.set('categoryslug:' + slug + ':cid', cid); if (callback) callback({'status': 1}); }); @@ -36,8 +39,8 @@ var RDB = require('./../redis.js'), if (key == 'name') { // reset slugs if name is updated var slug = cid + '/' + utils.slugify(category[key]); - RDB.set('cid:' + cid + ':slug', slug); - RDB.set('category:slug:' + slug + ':cid', cid); + RDB.hset('category:' + cid, 'slug', slug); + RDB.set('categoryslug:' + slug + ':cid', cid); RDB.smembers('categories:' + cid + ':tid', function(err, tids) { var pipe = RDB.multi(); diff --git a/src/categories.js b/src/categories.js index 989d9efcb1..036fb5b490 100644 --- a/src/categories.js +++ b/src/categories.js @@ -9,14 +9,13 @@ var RDB = require('./redis.js'), Categories.getCategoryById = function(category_id, current_user, callback) { RDB.smembers('categories:' + category_id + ':tid', function(err, tids) { - RDB.multi() - .get('cid:' + category_id + ':name') - .smembers('cid:' + category_id + ':active_users') - .get('cid:' + category_id + ':slug') - .exec(function(err, replies) { - var category_name = replies[0], - active_users = replies[1], - category_slug = replies[2]; + + Categories.getCategoryData(category_id, function(categoryData) { + + var category_name = categoryData.name; + category_slug = categoryData.slug; + + RDB.smembers('cid:' + category_id + ':active_users', function(err, active_users) { if (category_name === null) { callback(false); @@ -85,6 +84,7 @@ var RDB = require('./redis.js'), }); } }); + }); }); } @@ -115,6 +115,7 @@ var RDB = require('./redis.js'), // not the permanent location for this function Categories.getTopicsByTids = function(tids, current_user, callback, category_id /*temporary*/) { + var retrieved_topics = []; var topicCountToLoad = tids.length; @@ -271,6 +272,14 @@ var RDB = require('./redis.js'), }); } + Categories.hasReadCategory = function(cid, uid, callback) { + RDB.sismember('cid:' + cid + ':read_by_uid', uid, function(err, hasRead) { + RDB.handle(err); + + callback(hasRead); + }); + } + Categories.getRecentReplies = function(cid, callback) { RDB.zrevrange('categories:recent_posts:cid:' + cid, 0, 4, function(err, pids) { @@ -284,69 +293,40 @@ var RDB = require('./redis.js'), }); } + Categories.getCategoryData = function(cid, callback) { + RDB.hgetall('category:' + cid, function(err, data) { + if(err === null) + callback(data); + else + console.log(err); + }); + } + Categories.getCategories = function(cids, callback, current_user) { if (cids.length === 0) { callback({'categories' : []}); return; } - var name = [], - description = [], - icon = [], - blockclass = [], - slug = [], - topic_count = [], - has_read = {}; - - for (var i=0, ii=cids.length; i 0) { RDB.sismember(schema.topics(tid).read_by_uid, uid, function(err, read) { next(null, read); @@ -400,7 +399,7 @@ marked.setOptions({ Topics.setTopicField(tid, 'category_slug', data.categories[0].slug); }); - RDB.incr('cid:' + category_id + ':topiccount'); + RDB.hincrby('category:' + category_id, 'topic_count', 1); RDB.incr('totaltopiccount'); feed.updateCategory(category_id); diff --git a/src/webserver.js b/src/webserver.js index 0d054f4e43..197d863737 100644 --- a/src/webserver.js +++ b/src/webserver.js @@ -314,9 +314,12 @@ var express = require('express'), app.all('/test', function(req, res) { - topics.getTopicById(24, 1, function(data) { + /*topics.getTopicById(24, 1, function(data) { res.send(data); - }); + });*/ + categories.getCategoryById(1,1, function(data) { + res.send(data); + },1); });