From 114f416ec017ddd142378f91fcdd36f72d075189 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bar=C4=B1=C5=9F=20Soner=20U=C5=9Fakl=C4=B1?= Date: Wed, 3 May 2017 15:30:42 -0400 Subject: [PATCH] remove dupe code --- src/user/data.js | 79 +++++++++++++++++++----------------------------- 1 file changed, 31 insertions(+), 48 deletions(-) diff --git a/src/user/data.js b/src/user/data.js index 09dfb8bb12..ca8dbd758f 100644 --- a/src/user/data.js +++ b/src/user/data.js @@ -26,6 +26,10 @@ module.exports = function (User) { }; User.getUsersFields = function (uids, fields, callback) { + if (!Array.isArray(uids) || !uids.length) { + return callback(null, []); + } + var fieldsToRemove = []; function addField(field) { if (fields.indexOf(field) === -1) { @@ -34,23 +38,6 @@ module.exports = function (User) { } } - // Eliminate duplicates and build ref table - var uniqueUids = uids.filter(function (uid, index) { - return index === uids.indexOf(uid); - }); - var ref = uniqueUids.reduce(function (memo, cur, idx) { - memo[cur] = idx; - return memo; - }, {}); - - if (!Array.isArray(uniqueUids) || !uniqueUids.length) { - return callback(null, []); - } - - var keys = uniqueUids.map(function (uid) { - return 'user:' + uid; - }); - if (fields.indexOf('uid') === -1) { fields.push('uid'); } @@ -64,21 +51,17 @@ module.exports = function (User) { addField('lastonline'); } + var uniqueUids = uids.filter(function (uid, index) { + return index === uids.indexOf(uid); + }); + async.waterfall([ function (next) { - db.getObjectsFields(keys, fields, function (err, users) { - if (err) { - return callback(err); - } - - users = uids.map(function (uid) { - return users[ref[uid]]; - }); - - next(null, users); - }); + db.getObjectsFields(uidsToUserKeys(uniqueUids), fields, next); }, function (users, next) { + users = uidsToUsers(uids, uniqueUids, users); + modifyUserData(users, fieldsToRemove, next); }, ], callback); @@ -100,39 +83,39 @@ module.exports = function (User) { return callback(null, []); } - // Eliminate duplicates and build ref table var uniqueUids = uids.filter(function (uid, index) { return index === uids.indexOf(uid); }); - var ref = uniqueUids.reduce(function (memo, cur, idx) { - memo[cur] = idx; - return memo; - }, {}); - - var keys = uniqueUids.map(function (uid) { - return 'user:' + uid; - }); async.waterfall([ function (next) { - db.getObjects(keys, function (err, users) { - if (err) { - return callback(err); - } - - users = uids.map(function (uid) { - return users[ref[uid]]; - }); - - next(null, users); - }); + db.getObjects(uidsToUserKeys(uniqueUids), next); }, function (users, next) { + users = uidsToUsers(uids, uniqueUids, users); + modifyUserData(users, [], next); }, ], callback); }; + function uidsToUsers(uids, uniqueUids, usersData) { + var ref = uniqueUids.reduce(function (memo, cur, idx) { + memo[cur] = idx; + return memo; + }, {}); + var users = uids.map(function (uid) { + return usersData[ref[uid]]; + }); + return users; + } + + function uidsToUserKeys(uids) { + return uids.map(function (uid) { + return 'user:' + uid; + }); + } + function modifyUserData(users, fieldsToRemove, callback) { users.forEach(function (user) { if (!user) {