From 4b5988c269263d6de71d7486bdcf0dd5b1b4a9c1 Mon Sep 17 00:00:00 2001 From: Baris Soner Usakli Date: Wed, 4 Dec 2013 15:11:17 -0500 Subject: [PATCH] isSetMember returns true or false --- src/database/mongo.js | 31 +++++++++++++++++++++---------- src/database/redis.js | 8 +++++++- src/routes/debug.js | 14 ++++++++------ src/threadTools.js | 2 +- src/user.js | 8 ++++---- 5 files changed, 41 insertions(+), 22 deletions(-) diff --git a/src/database/mongo.js b/src/database/mongo.js index 0bdfd5a442..3cc0b5c907 100644 --- a/src/database/mongo.js +++ b/src/database/mongo.js @@ -4,6 +4,7 @@ 'use strict'; var mongoClient = require('mongodb').MongoClient, winston = require('winston'), + async = require('async'), nconf = require('nconf'), express = require('express'), mongoStore = require('connect-mongo')(express), @@ -279,7 +280,17 @@ } module.isMemberOfSets = function(sets, value, callback) { - throw new Error('not-implemented'); + + + function iterator(set, next) { + module.isSetMember(set, value, next); + } + + async.map(sets, iterator, function(err, result) { + console.log(err, result); + callback(err, result); + }); + } module.getSetMembers = function(key, callback) { @@ -469,15 +480,15 @@ } db.collection('objects').findOne({_key:key}, { array: { $slice: [start, stop - start + 1] }}, function(err, data) { - if(err) { - return callback(err); - } - if(data && data.array) { - callback(null, data.array); - } else { - callback(null, []); - } - }); + if(err) { + return callback(err); + } + if(data && data.array) { + callback(null, data.array); + } else { + callback(null, []); + } + }); } diff --git a/src/database/redis.js b/src/database/redis.js index 95b1909936..c640a5530b 100644 --- a/src/database/redis.js +++ b/src/database/redis.js @@ -234,7 +234,13 @@ } module.isSetMember = function(key, value, callback) { - redisClient.sismember(key, value, callback); + redisClient.sismember(key, value, function(err, result) { + if(err) { + return callback(err); + } + + callback(null, result === 1); + }); } module.isMemberOfSets = function(sets, value, callback) { diff --git a/src/routes/debug.js b/src/routes/debug.js index 81bc24c9d4..76f28036a3 100644 --- a/src/routes/debug.js +++ b/src/routes/debug.js @@ -261,6 +261,13 @@ var DebugRoute = function(app) { }); } + function isMemberOfSets(callback) { + db.isMemberOfSets(['doesntexist', 'myTestSet', 'nonexistingSet'], 5, function(err, data) { + console.log('isMemberOfSets return', data); + callback(err, {'isMemberOfSets': data}); + }); + } + function setRemoveRandom(callback) { db.setRemoveRandom('myTestSet', function(err, data) { console.log('setRemoveRandom return', data); @@ -317,16 +324,11 @@ var DebugRoute = function(app) { var setTasks = [ getSetMembers, - // setRemove, - setAdd, setAdd, getSetMembers, isSetMember, - // setRemove, - isSetMember, getSetMembers, - setRemoveRandom, - getSetMembers + isMemberOfSets ]; require('async').series(setTasks, function(err, results) { diff --git a/src/threadTools.js b/src/threadTools.js index 331bc71298..07dc482884 100644 --- a/src/threadTools.js +++ b/src/threadTools.js @@ -22,7 +22,7 @@ var db = require('./database'), callback(false); } - callback( !! ismember || false); + callback(ismember); }); } diff --git a/src/user.js b/src/user.js index 686b8e39c3..164efd6db1 100644 --- a/src/user.js +++ b/src/user.js @@ -581,9 +581,9 @@ var bcrypt = require('bcrypt'), }; User.isFollowing = function(uid, theirid, callback) { - db.isSetMember('following:' + uid, theirid, function(err, data) { + db.isSetMember('following:' + uid, theirid, function(err, isMember) { if (!err) { - callback(data === 1); + callback(isMember); } else { console.log(err); } @@ -695,14 +695,14 @@ var bcrypt = require('bcrypt'), if(err) { return calback(err); } - callback(err, !! exists); + callback(err, exists); }); }; User.isAdministrator = function(uid, callback) { groups.getGidFromName('Administrators', function(err, gid) { groups.isMember(uid, gid, function(err, isAdmin) { - callback(err, !! isAdmin); + callback(err, isAdmin); }); }); };