From 4736a68534e990b1efca46cf2fa6a472bf037f02 Mon Sep 17 00:00:00 2001 From: barisusakli Date: Wed, 3 Sep 2014 15:16:41 -0400 Subject: [PATCH] dont create term object on each call --- src/posts.js | 63 +------------------------------------- src/posts/recent.js | 70 +++++++++++++++++++++++++++++++++++++++++++ src/topics/popular.js | 12 ++++---- src/topics/recent.js | 15 +++++----- 4 files changed, 84 insertions(+), 76 deletions(-) create mode 100644 src/posts/recent.js diff --git a/src/posts.js b/src/posts.js index 146b08f977..57a97e71ca 100644 --- a/src/posts.js +++ b/src/posts.js @@ -25,6 +25,7 @@ var async = require('async'), websockets = require('./socket.io'); (function(Posts) { + require('./posts/recent')(Posts); require('./posts/delete')(Posts); Posts.create = function(data, callback) { @@ -160,68 +161,6 @@ var async = require('async'), }); }; - Posts.getRecentPosts = function(uid, start, stop, term, callback) { - var terms = { - day: 86400000, - week: 604800000, - month: 2592000000 - }; - - var since = terms.day; - if (terms[term]) { - since = terms[term]; - } - - var count = parseInt(stop, 10) === -1 ? stop : stop - start + 1; - - db.getSortedSetRevRangeByScore('posts:pid', start, count, Infinity, Date.now() - since, function(err, pids) { - if(err) { - return callback(err); - } - - if (!Array.isArray(pids) || !pids.length) { - return callback(null, []); - } - - privileges.posts.filter('read', pids, uid, function(err, pids) { - if (err) { - return callback(err); - } - Posts.getPostSummaryByPids(pids, uid, {stripTags: true}, callback); - }); - }); - }; - - Posts.getRecentPosterUids = function(start, end, callback) { - db.getSortedSetRevRange('posts:pid', start, end, function(err, pids) { - if (err) { - return callback(err); - } - - if (!Array.isArray(pids) || !pids.length) { - return callback(null, []); - } - - pids = pids.map(function(pid) { - return 'post:' + pid; - }); - - db.getObjectsFields(pids, ['uid'], function(err, postData) { - if (err) { - return callback(err); - } - - postData = postData.map(function(post) { - return post && post.uid; - }).filter(function(value, index, array) { - return value && array.indexOf(value) === index; - }); - - callback(null, postData); - }); - }); - }; - Posts.getUserInfoForPosts = function(uids, callback) { async.parallel({ groups: function(next) { diff --git a/src/posts/recent.js b/src/posts/recent.js new file mode 100644 index 0000000000..7f3b43314e --- /dev/null +++ b/src/posts/recent.js @@ -0,0 +1,70 @@ +'use strict'; + +var db = require('../database'), + privileges = require('../privileges'); + + +module.exports = function(Posts) { + var terms = { + day: 86400000, + week: 604800000, + month: 2592000000 + }; + + Posts.getRecentPosts = function(uid, start, stop, term, callback) { + var since = terms.day; + if (terms[term]) { + since = terms[term]; + } + + var count = parseInt(stop, 10) === -1 ? stop : stop - start + 1; + + db.getSortedSetRevRangeByScore('posts:pid', start, count, Infinity, Date.now() - since, function(err, pids) { + if (err) { + return callback(err); + } + + if (!Array.isArray(pids) || !pids.length) { + return callback(null, []); + } + + privileges.posts.filter('read', pids, uid, function(err, pids) { + if (err) { + return callback(err); + } + Posts.getPostSummaryByPids(pids, uid, {stripTags: true}, callback); + }); + }); + }; + + Posts.getRecentPosterUids = function(start, end, callback) { + db.getSortedSetRevRange('posts:pid', start, end, function(err, pids) { + if (err) { + return callback(err); + } + + if (!Array.isArray(pids) || !pids.length) { + return callback(null, []); + } + + pids = pids.map(function(pid) { + return 'post:' + pid; + }); + + db.getObjectsFields(pids, ['uid'], function(err, postData) { + if (err) { + return callback(err); + } + + postData = postData.map(function(post) { + return post && post.uid; + }).filter(function(value, index, array) { + return value && array.indexOf(value) === index; + }); + + callback(null, postData); + }); + }); + }; + +}; diff --git a/src/topics/popular.js b/src/topics/popular.js index 167bf1cb83..2dadb9fee6 100644 --- a/src/topics/popular.js +++ b/src/topics/popular.js @@ -7,15 +7,15 @@ var async = require('async'), module.exports = function(Topics) { + var terms = { + daily: 'day', + weekly: 'week', + monthly: 'month', + yearly: 'year' + }; Topics.getPopular = function(term, uid, count, callback) { count = parseInt(count, 10) || 20; - var terms = { - daily: 'day', - weekly: 'week', - monthly: 'month', - yearly: 'year' - }; if (term === 'alltime') { return getAllTimePopular(uid, count, callback); diff --git a/src/topics/recent.js b/src/topics/recent.js index 99ff00107b..8a3d8011e8 100644 --- a/src/topics/recent.js +++ b/src/topics/recent.js @@ -5,6 +5,12 @@ var db = require('./../database'); module.exports = function(Topics) { + var terms = { + day: 86400000, + week: 604800000, + month: 2592000000, + year: 31104000000 + }; Topics.getLatestTopics = function(uid, start, end, term, callback) { Topics.getLatestTids(start, end, term, function(err, tids) { @@ -17,15 +23,8 @@ module.exports = function(Topics) { }; Topics.getLatestTids = function(start, end, term, callback) { - var terms = { - day: 86400000, - week: 604800000, - month: 2592000000, - year: 31104000000 - }; - var since = terms.day; - if(terms[term]) { + if (terms[term]) { since = terms[term]; }