From 4f72513f192b6b08ecb8197aca0a19c8f53e6222 Mon Sep 17 00:00:00 2001 From: barisusakli Date: Wed, 12 Mar 2014 12:46:30 -0400 Subject: [PATCH 1/2] removed keys --- src/database/mongo.js | 138 ++++++++++++++---------------------------- src/database/redis.js | 6 +- 2 files changed, 48 insertions(+), 96 deletions(-) diff --git a/src/database/mongo.js b/src/database/mongo.js index f73557a8a7..aecdbfc33b 100644 --- a/src/database/mongo.js +++ b/src/database/mongo.js @@ -121,12 +121,12 @@ return value.toString(); } + // // Exported functions // module.searchIndex = function(key, content, id) { - var data = { id:id, key:key, @@ -141,33 +141,26 @@ }; module.search = function(key, term, limit, callback) { - db.command({text:"search" , search: term, filter: {key:key}, limit: limit }, function(err, result) { + db.command({text:'search' , search: term, filter: {key:key}, limit: limit }, function(err, result) { if(err) { return callback(err); } - if(!result) { + if(!result || !result.results || !result.results.length) { return callback(null, []); } - if(result.results && result.results.length) { - var data = result.results.map(function(item) { - return item.obj.id; - }); - callback(null, data); - } else { - callback(null, []); - } + var data = result.results.map(function(item) { + return item.obj.id; + }); + callback(null, data); }); }; module.searchRemove = function(key, id, callback) { db.collection('search').remove({id:id, key:key}, function(err, result) { - if(err) { - winston.error('Error removing search ' + err.message); - } if (typeof callback === 'function') { - callback(); + callback(err); } }); }; @@ -221,12 +214,6 @@ module.setObject(key, data, callback); }; - module.keys = function(key, callback) { - db.collection('objects').find( { _key: { $regex: key /*, $options: 'i'*/ } }, function(err, result) { - callback(err, result); - }); - }; - module.rename = function(oldKey, newKey, callback) { db.collection('objects').update({_key: oldKey}, {$set:{_key: newKey}}, function(err, result) { if(typeof callback === 'function') { @@ -450,7 +437,7 @@ array[index] = toString(element); }); - db.collection('objects').update( { _key: key }, { $pullAll: { members: value } }, function(err, result) { + db.collection('objects').update({_key: key}, {$pullAll: {members: value}}, function(err, result) { if(typeof callback === 'function') { callback(err, result); } @@ -500,34 +487,27 @@ return result.indexOf(set) !== -1 ? 1 : 0; }); - callback(err, result); + callback(null, result); }); }; module.getSetMembers = function(key, callback) { db.collection('objects').findOne({_key:key}, {members:1}, function(err, data) { - if(err) { + if (err) { return callback(err); } - if(!data) { - callback(null, []); - } else { - callback(null, data.members); - } + callback(null, data ? data.members : []); }); }; module.setCount = function(key, callback) { db.collection('objects').findOne({_key:key}, function(err, data) { - if(err) { + if (err) { return callback(err); } - if(!data) { - return callback(null, 0); - } - callback(null, data.members.length); + return callback(null, data ? data.members.length : 0); }); }; @@ -535,25 +515,25 @@ db.collection('objects').findOne({_key:key}, function(err, data) { if(err) { if(typeof callback === 'function') { - return callback(err); - } else { - return winston.error(err.message); + callback(err); } + return; } if(!data) { if(typeof callback === 'function') { callback(null, 0); } - } else { - var randomIndex = Math.floor(Math.random() * data.members.length); - var value = data.members[randomIndex]; - module.setRemove(data._key, value, function(err, result) { - if(typeof callback === 'function') { - callback(err, value); - } - }); + return; } + + var randomIndex = Math.floor(Math.random() * data.members.length); + var value = data.members[randomIndex]; + module.setRemove(data._key, value, function(err, result) { + if(typeof callback === 'function') { + callback(err, value); + } + }); }); }; @@ -615,10 +595,8 @@ }; module.getSortedSetRevRangeByScore = function(args, callback) { - - //var args = ['topics:recent', '+inf', timestamp - since, 'LIMIT', start, end - start + 1]; var key = args[0], - max = (args[1] === '+inf')?Number.MAX_VALUE:args[1], + max = (args[1] === '+inf') ? Number.MAX_VALUE : args[1], min = args[2], start = args[4], count = args[5]; @@ -647,27 +625,13 @@ module.sortedSetCount = function(key, min, max, callback) { db.collection('objects').count({_key:key, score: {$gte:min, $lte:max}}, function(err, count) { - if(err) { - return callback(err); - } - - if(!count) { - return callback(null, 0); - } - callback(null,count); + callback(err, count ? count : 0); }); }; module.sortedSetCard = function(key, callback) { db.collection('objects').count({_key:key}, function(err, count) { - if(err) { - return callback(err); - } - - if(!count) { - return callback(null, 0); - } - callback(null, count); + callback(err, count ? count : 0); }); }; @@ -768,15 +732,7 @@ db.collection('objects').update({_key: key }, { $pop: { array: 1 } }, function(err, result) { if(typeof callback === 'function') { - if(err) { - return callback(err); - } - - if(value && value.length) { - callback(err, value[0]); - } else { - callback(err, null); - } + callback(err, (value && value.length) ? value[0] : null); } }); }); @@ -811,31 +767,31 @@ return callback(err); } - if(data && data.array) { - if(splice) { + if(!(data && data.array)) { + return callback(null, []); + } - if(start < 0) { - start = data.array.length - Math.abs(start); - } + if(splice) { - if(stop < 0) { - stop = data.array.length - Math.abs(stop); - } + if(start < 0) { + start = data.array.length - Math.abs(start); + } - if(start > stop) { - return callback(null, []); - } + if(stop < 0) { + stop = data.array.length - Math.abs(stop); + } - var howMany = stop - start + 1; - if(start !== 0 || howMany !== data.array.length) { - data.array = data.array.splice(start, howMany); - } + if(start > stop) { + return callback(null, []); } - callback(null, data.array); - } else { - callback(null, []); + var howMany = stop - start + 1; + if(start !== 0 || howMany !== data.array.length) { + data.array = data.array.splice(start, howMany); + } } + + callback(null, data.array); }); }; diff --git a/src/database/redis.js b/src/database/redis.js index 1c6a4d4f27..58a5da9ee7 100644 --- a/src/database/redis.js +++ b/src/database/redis.js @@ -167,10 +167,6 @@ redisClient.set(key, value, callback); }; - module.keys = function(key, callback) { - redisClient.keys(key, callback); - }; - module.rename = function(oldKey, newKey, callback) { redisClient.rename(oldKey, newKey, callback); }; @@ -188,7 +184,7 @@ module.setObject = function(key, data, callback) { // TODO: this crashes if callback isnt supplied -baris redisClient.hmset(key, data, function(err, res) { - if(callback) { + if(typeof callback === 'function') { callback(err, res); } }); From 7b409c095cb22d34a7da85807d8128db41016929 Mon Sep 17 00:00:00 2001 From: barisusakli Date: Wed, 12 Mar 2014 13:38:25 -0400 Subject: [PATCH 2/2] mongo callback refactor --- src/database/mongo.js | 154 +++++++++++------------------------------- 1 file changed, 40 insertions(+), 114 deletions(-) diff --git a/src/database/mongo.js b/src/database/mongo.js index aecdbfc33b..7b6705fbfd 100644 --- a/src/database/mongo.js +++ b/src/database/mongo.js @@ -121,6 +121,13 @@ return value.toString(); } + function done(cb) { + return function(err, result) { + if (typeof cb === 'function') { + cb(err, result); + } + }; + } // // Exported functions @@ -158,19 +165,11 @@ }; module.searchRemove = function(key, id, callback) { - db.collection('search').remove({id:id, key:key}, function(err, result) { - if (typeof callback === 'function') { - callback(err); - } - }); + db.collection('search').remove({id:id, key:key}, done(callback)); }; module.flushdb = function(callback) { - db.dropDatabase(function(err, result) { - if (typeof callback === 'function') { - callback(err); - } - }); + db.dropDatabase(done(callback)); }; module.info = function(callback) { @@ -198,11 +197,7 @@ }; module.delete = function(key, callback) { - db.collection('objects').remove({_key:key}, function(err, result) { - if(typeof callback === 'function') { - callback(err, result); - } - }); + db.collection('objects').remove({_key:key}, done(callback)); }; module.get = function(key, callback) { @@ -215,11 +210,7 @@ }; module.rename = function(oldKey, newKey, callback) { - db.collection('objects').update({_key: oldKey}, {$set:{_key: newKey}}, function(err, result) { - if(typeof callback === 'function') { - callback(err, result); - } - }); + db.collection('objects').update({_key: oldKey}, {$set:{_key: newKey}}, done(callback)); }; module.expire = function(key, seconds, callback) { @@ -233,11 +224,7 @@ //hashes module.setObject = function(key, data, callback) { data._key = key; - db.collection('objects').update({_key:key}, {$set:data}, {upsert:true, w: 1}, function(err, result) { - if(typeof callback === 'function') { - callback(err, result); - } - }); + db.collection('objects').update({_key:key}, {$set:data}, {upsert:true, w: 1}, done(callback)); }; module.setObjectField = function(key, field, value, callback) { @@ -272,11 +259,7 @@ module.getObjectField = function(key, field, callback) { field = fieldToString(field); module.getObjectFields(key, [field], function(err, data) { - if(err) { - return callback(err); - } - - callback(null, data ? data[field] : null); + callback(err, data ? data[field] : null); }); }; @@ -338,15 +321,7 @@ module.getObjectKeys = function(key, callback) { module.getObject(key, function(err, data) { - if(err) { - return callback(err); - } - - if(data) { - callback(null, Object.keys(data)); - } else { - callback(null, []); - } + callback(err, data ? Object.keys(data) : []); }); }; @@ -371,9 +346,6 @@ field = fieldToString(field); data[field] = ''; db.collection('objects').findOne({_key:key}, {fields:data}, function(err, item) { - if(err) { - return callback(err); - } callback(err, !!item && item[field] !== undefined && item[field] !== null); }); }; @@ -382,11 +354,7 @@ var data = {}; field = fieldToString(field); data[field] = ''; - db.collection('objects').update({_key:key}, {$unset : data}, function(err, result) { - if(typeof callback === 'function') { - callback(err, result); - } - }); + db.collection('objects').update({_key:key}, {$unset : data}, done(callback)); }; module.incrObjectField = function(key, field, callback) { @@ -421,11 +389,18 @@ array[index] = toString(element); }); - db.collection('objects').update({_key: key}, { $addToSet: { members: { $each: value } } }, { upsert: true, w: 1 }, function(err, result) { - if(typeof callback === 'function') { - callback(err, result); + db.collection('objects').update({ + _key: key + }, { + $addToSet: { + members: { + $each: value + } } - }); + }, { + upsert: true, + w: 1 + }, done(callback)); }; module.setRemove = function(key, value, callback) { @@ -437,11 +412,7 @@ array[index] = toString(element); }); - db.collection('objects').update({_key: key}, {$pullAll: {members: value}}, function(err, result) { - if(typeof callback === 'function') { - callback(err, result); - } - }); + db.collection('objects').update({_key: key}, {$pullAll: {members: value}}, done(callback)); }; module.isSetMember = function(key, value, callback) { @@ -493,36 +464,21 @@ module.getSetMembers = function(key, callback) { db.collection('objects').findOne({_key:key}, {members:1}, function(err, data) { - if (err) { - return callback(err); - } - - callback(null, data ? data.members : []); + callback(err, data ? data.members : []); }); }; module.setCount = function(key, callback) { db.collection('objects').findOne({_key:key}, function(err, data) { - if (err) { - return callback(err); - } - - return callback(null, data ? data.members.length : 0); + return callback(err, data ? data.members.length : 0); }); }; module.setRemoveRandom = function(key, callback) { db.collection('objects').findOne({_key:key}, function(err, data) { - if(err) { + if(err || !data) { if(typeof callback === 'function') { - callback(err); - } - return; - } - - if(!data) { - if(typeof callback === 'function') { - callback(null, 0); + callback(err, 0); } return; } @@ -547,21 +503,13 @@ value: value }; - db.collection('objects').update({_key:key, value:value}, {$set:data}, {upsert:true, w: 1}, function(err, result) { - if(typeof callback === 'function') { - callback(err, result); - } - }); + db.collection('objects').update({_key:key, value:value}, {$set:data}, {upsert:true, w: 1}, done(callback)); }; module.sortedSetRemove = function(key, value, callback) { value = toString(value); - db.collection('objects').remove({_key:key, value:value}, function(err, result) { - if(typeof callback === 'function') { - callback(err, result); - } - }); + db.collection('objects').remove({_key:key, value:value}, done(callback)); }; function getSortedSetRange(key, start, stop, sort, callback) { @@ -570,12 +518,8 @@ .skip(start) .sort({score: sort}) .toArray(function(err, data) { - if (err) { - return callback(err); - } - - if (!data) { - return callback(null, null); + if (err || !data) { + return callback(err, null); } data = data.map(function(item) { @@ -695,17 +639,11 @@ if(err) { if(typeof callback === 'function') { return callback(err); - } else { - return winston.error(err.message); } } if(exists) { - db.collection('objects').update({_key:key}, {'$set': {'array.-1': value}}, {upsert:true, w:1 }, function(err, result) { - if(typeof callback === 'function') { - callback(err, result); - } - }); + db.collection('objects').update({_key:key}, {'$set': {'array.-1': value}}, {upsert:true, w:1 }, done(callback)); } else { module.listAppend(key, value, callback); } @@ -714,11 +652,7 @@ module.listAppend = function(key, value, callback) { value = toString(value); - db.collection('objects').update({ _key: key }, { $push: { array: value } }, {upsert:true, w:1}, function(err, result) { - if(typeof callback === 'function') { - callback(err, result); - } - }); + db.collection('objects').update({ _key: key }, { $push: { array: value } }, {upsert:true, w:1}, done(callback)); }; module.listRemoveLast = function(key, callback) { @@ -741,11 +675,7 @@ module.listRemoveAll = function(key, value, callback) { value = toString(value); - db.collection('objects').update({_key: key }, { $pull: { array: value } }, function(err, result) { - if(typeof callback === 'function') { - callback(err, result); - } - }); + db.collection('objects').update({_key: key }, { $pull: { array: value } }, done(callback)); }; module.getListRange = function(key, start, stop, callback) { @@ -763,12 +693,8 @@ } db.collection('objects').findOne({_key:key}, { array: { $slice: [skip, limit] }}, function(err, data) { - if(err) { - return callback(err); - } - - if(!(data && data.array)) { - return callback(null, []); + if(err || !(data && data.array)) { + return callback(err, []); } if(splice) {