From c379753341a9b937fa06a95f844e95d1d61b3862 Mon Sep 17 00:00:00 2001 From: barisusakli Date: Wed, 21 Jan 2015 22:48:22 -0500 Subject: [PATCH] upgrade scripts upgrade groups to sorted set(groups:createtime) upgrade upgrade groups::members to sorted set new database methods tests --- src/database/mongo/sorted.js | 44 ++++++++++++++++++++++ src/database/redis/sorted.js | 26 +++++++++++++ src/groups.js | 71 +++++++++++++++++++++--------------- src/upgrade.js | 51 +++++++++++++++++++++++++- tests/database/sorted.js | 26 +++++++++++++ 5 files changed, 188 insertions(+), 30 deletions(-) diff --git a/src/database/mongo/sorted.js b/src/database/mongo/sorted.js index 74da932a18..565189dd8f 100644 --- a/src/database/mongo/sorted.js +++ b/src/database/mongo/sorted.js @@ -400,6 +400,50 @@ module.exports = function(db, module) { }); }; + module.isMemberOfSortedSets = function(keys, value, callback) { + if (!Array.isArray(keys)) { + return callback(); + } + value = helpers.valueToString(value); + db.collection('objects').find({_key: {$in: keys}, value: value}, {fields: {_id: 0, _key: 1, value: 1}}).toArray(function(err, results) { + if (err) { + return callback(err); + } + + results = results.map(function(item) { + return item._key; + }); + + results = keys.map(function(key) { + return results.indexOf(key) !== -1; + }); + callback(null, results); + }); + }; + + module.getSortedSetsMembers = function(keys, callback) { + if (!Array.isArray(keys) || !keys.length) { + return callback(null, []); + } + db.collection('objects').find({_key: {$in: keys}}, {_id: 0, _key: 1, value: 1}).toArray(function(err, data) { + if (err) { + return callback(err); + } + + var sets = {}; + data.forEach(function(set) { + sets[set._key] = sets[set._key] || []; + sets[set._key].push(set.value); + }); + + var returnData = new Array(keys.length); + for(var i=0; i