markAsRead improvement

takes in an array of tids instead of marking topics read 1 by 1
same for the category.markAsRead function
This commit is contained in:
barisusakli
2014-09-10 21:44:19 -04:00
parent 61871fae77
commit 01f983e29c
9 changed files with 86 additions and 43 deletions

View File

@@ -19,6 +19,10 @@ module.exports = function(db, module) {
});
};
module.setsAdd = function(keys, value, callback) {
throw new Error('not-implemented');
};
module.setRemove = function(key, value, callback) {
module.getListRange(key, 0, -1, function(err, set) {
module.set(key, set.splice(set.indexOf(value), 1), callback);

View File

@@ -31,6 +31,31 @@ module.exports = function(db, module) {
});
};
module.setsAdd = function(keys, value, callback) {
callback = callback || helpers.noop;
if(!Array.isArray(value)) {
value = [value];
}
value.forEach(function(element, index, array) {
array[index] = helpers.valueToString(element);
});
var bulk = db.collection('objects').initializeUnorderedBulkOp();
for(var i=0; i<keys.length; ++i) {
bulk.find({_key: keys[i]}).upsert().updateOne({ $addToSet: {
members: {
$each: value
}
}});
}
bulk.execute(function(err) {
return callback(err);
});
};
module.setRemove = function(key, value, callback) {
callback = callback || helpers.noop;
if(!Array.isArray(value)) {

View File

@@ -8,6 +8,17 @@ module.exports = function(redisClient, module) {
});
};
module.setsAdd = function(keys, value, callback) {
callback = callback || function() {};
var multi = redisClient.multi();
for (var i=0; i<keys.length; ++i) {
multi.sadd(keys[i], value);
}
multi.exec(function(err) {
callback(err);
});
};
module.setRemove = function(key, value, callback) {
redisClient.srem(key, value, callback);
};