From 72c35db6fd499c08e5703b837a28a5f74029f959 Mon Sep 17 00:00:00 2001 From: Baris Soner Usakli Date: Fri, 7 Feb 2014 11:45:13 -0500 Subject: [PATCH 1/2] cleanup in move rencet replies' --- src/categories.js | 11 +++-------- src/threadTools.js | 11 +++-------- 2 files changed, 6 insertions(+), 16 deletions(-) diff --git a/src/categories.js b/src/categories.js index 4a1e0fcef7..583358d84c 100644 --- a/src/categories.js +++ b/src/categories.js @@ -290,21 +290,16 @@ var db = require('./database'), db.sortedSetRemove('categories:recent_posts:cid:' + oldCid, pid); db.sortedSetAdd('categories:recent_posts:cid:' + cid, timestamp, pid); - callback(null); + callback(); }); } topics.getPids(tid, function(err, pids) { if(err) { - return callback(err, null); + return callback(err); } - async.each(pids, movePost, function(err) { - if(err) { - return callback(err, null); - } - callback(null, 1); - }); + async.each(pids, movePost, callback); }); }; diff --git a/src/threadTools.js b/src/threadTools.js index 87d0026171..5125eaf6a4 100644 --- a/src/threadTools.js +++ b/src/threadTools.js @@ -206,19 +206,14 @@ var winston = require('winston'), topics.setTopicField(tid, 'cid', cid); - categories.moveActiveUsers(tid, oldCid, cid); - categories.moveRecentReplies(tid, oldCid, cid, function(err, data) { - if (err) { - winston.err(err); - } - }); - if(!parseInt(topic.deleted, 10)) { categories.incrementCategoryFieldBy(oldCid, 'topic_count', -1); categories.incrementCategoryFieldBy(cid, 'topic_count', 1); } - callback(null); + categories.moveActiveUsers(tid, oldCid, cid); + + categories.moveRecentReplies(tid, oldCid, cid, callback); }); } From d6780652ad4ac26a0b5549c87e19182e430f2102 Mon Sep 17 00:00:00 2001 From: Baris Soner Usakli Date: Fri, 7 Feb 2014 12:09:24 -0500 Subject: [PATCH 2/2] closes #960 --- src/categories.js | 35 ++++++++++++++++------------------ src/upgrade.js | 48 ++++++++++++++++++++++++++++++++++++++++++++++- 2 files changed, 63 insertions(+), 20 deletions(-) diff --git a/src/categories.js b/src/categories.js index 89b103a172..54543828a0 100644 --- a/src/categories.js +++ b/src/categories.js @@ -256,28 +256,25 @@ var db = require('./database'), } CategoryTools.privileges(cid, uid, function(err, privileges) { - if (privileges.read) { - db.getSortedSetRevRange('categories:recent_posts:cid:' + cid, 0, count - 1, function(err, pids) { + if(err) { + return callback(err); + } - if (err) { - winston.err(err); - return callback(err, []); - } + if (!privileges.read) { + return callback(null, []); + } - if (pids.length === 0) { - return callback(null, []); - } + db.getSortedSetRevRange('categories:recent_posts:cid:' + cid, 0, count - 1, function(err, pids) { + if (err) { + return callback(err, []); + } - posts.getPostSummaryByPids(pids, true, function(err, postData) { - if(err) { - return callback(err); - } - callback(null, postData); - }); - }); - } else { - callback(null, []); - } + if (!pids || !pids.length) { + return callback(null, []); + } + + posts.getPostSummaryByPids(pids, true, callback); + }); }); }; diff --git a/src/upgrade.js b/src/upgrade.js index 5f7140d31d..8fa94af00b 100644 --- a/src/upgrade.js +++ b/src/upgrade.js @@ -19,7 +19,7 @@ var db = require('./database'), Upgrade.check = function(callback) { // IMPORTANT: REMEMBER TO UPDATE VALUE OF latestSchema - var latestSchema = new Date(2014, 1, 2, 16, 0).getTime(); + var latestSchema = new Date(2014, 1, 7, 16, 0).getTime(); db.get('schemaDate', function(err, value) { if (parseInt(value, 10) >= latestSchema) { @@ -515,6 +515,52 @@ Upgrade.upgrade = function(callback) { next(); } }, + function(next) { + + thisSchemaDate = new Date(2014, 1, 7, 16, 0).getTime(); + if (schemaDate < thisSchemaDate) { + updatesMade = true; + + winston.info('[2014/2/7] Updating category recent replies'); + db.getListRange('categories:cid', 0, -1, function(err, cids) { + + function updateCategory(cid, next) { + db.getSortedSetRevRange('categories:recent_posts:cid:' + cid, 0, - 1, function(err, pids) { + function updatePid(pid, next) { + Posts.getCidByPid(pid, function(err, realCid) { + if(err) { + return next(err); + } + + if(parseInt(realCid, 10) !== parseInt(cid, 10)) { + Posts.getPostField(pid, 'timestamp', function(err, timestamp) { + db.sortedSetRemove('categories:recent_posts:cid:' + cid, pid); + db.sortedSetAdd('categories:recent_posts:cid:' + realCid, timestamp, pid); + next(); + }); + } else { + next(); + } + }); + } + + async.each(pids, updatePid, next); + }); + } + + if(err) { + return next(err); + } + + async.each(cids, updateCategory, next); + }); + + + } else { + winston.info('[2014/2/7] Updating category recent replies -- skipped'); + next(); + } + } // Add new schema updates here // IMPORTANT: REMEMBER TO UPDATE VALUE OF latestSchema IN LINE 17!!! ], function(err) {