From aad9f83869f07adbf1bd35365b306538ce16ef28 Mon Sep 17 00:00:00 2001 From: barisusakli Date: Sun, 14 Aug 2016 13:13:15 +0300 Subject: [PATCH] use getSortedRevRangeWithScores, cleanup --- src/user/info.js | 41 ++++++++++++++++++++++++----------------- 1 file changed, 24 insertions(+), 17 deletions(-) diff --git a/src/user/info.js b/src/user/info.js index a9ca675eab..da85e25116 100644 --- a/src/user/info.js +++ b/src/user/info.js @@ -1,33 +1,39 @@ 'use strict'; -var async = require('async'), - _ = require('underscore'); +var async = require('async'); +var _ = require('underscore'); -var db = require('../database'), - posts = require('../posts'), - topics = require('../topics'); +var db = require('../database'); +var posts = require('../posts'); +var topics = require('../topics'); module.exports = function(User) { User.getModerationHistory = function(uid, callback) { async.waterfall([ function(next) { async.parallel({ - flags: async.apply(db.getSortedSetRevRangeByScoreWithScores, 'uid:' + uid + ':flag:pids', 0, 20, '+inf', '-inf'), - bans: async.apply(db.getSortedSetRevRangeByScoreWithScores, 'uid:' + uid + ':bans', 0, 20, '+inf', '-inf') + flags: async.apply(db.getSortedSetRevRangeWithScores, 'uid:' + uid + ':flag:pids', 0, 19), + bans: async.apply(db.getSortedSetRevRangeWithScores, 'uid:' + uid + ':bans', 0,19) }, next); }, - async.apply(getFlagMetadata), - async.apply(formatBanData) + function(data, next) { + getFlagMetadata(data, next); + } ], function(err, data) { - callback(err, data); + if (err) { + return callback(err); + } + formatBanData(data); + callback(null, data); }); }; function getFlagMetadata(data, callback) { - // Retrieve post title & slug from flags list - posts.getPostsFields(data.flags.map(function(flagObj) { + var pids = data.flags.map(function(flagObj) { return parseInt(flagObj.value, 10); - }), ['tid'], function(err, postData) { + }); + + posts.getPostsFields(pids, ['tid'], function(err, postData) { if (err) { return callback(err); } @@ -37,6 +43,9 @@ module.exports = function(User) { }); topics.getTopicsFields(tids, ['title'], function(err, topicData) { + if (err) { + return callback(err); + } data.flags = data.flags.map(function(flagObj, idx) { flagObj.pid = flagObj.value; flagObj.timestamp = flagObj.score; @@ -54,7 +63,7 @@ module.exports = function(User) { }); } - function formatBanData(data, callback) { + function formatBanData(data) { data.bans = data.bans.map(function(banObj) { banObj.until = parseInt(banObj.value, 10); banObj.untilReadable = new Date(banObj.until).toString(); @@ -67,7 +76,5 @@ module.exports = function(User) { return banObj; }); - - setImmediate(callback, null, data); } -} \ No newline at end of file +}; \ No newline at end of file