You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
72 lines
1.8 KiB
JavaScript
72 lines
1.8 KiB
JavaScript
"use strict";
|
|
|
|
var async = require('async');
|
|
|
|
module.exports = function(db, module) {
|
|
var helpers = module.helpers.level;
|
|
|
|
module.setAdd = function(key, value, callback) {
|
|
module.getListRange(key, 0, -1, function(err, set) {
|
|
if (set.indexOf(value) === -1) {
|
|
module.listAppend(key, value, callback);
|
|
} else {
|
|
if (typeof callback === 'function') {
|
|
callback(null, []); // verify if it sends back true on redis?
|
|
}
|
|
}
|
|
});
|
|
};
|
|
|
|
module.setRemove = function(key, value, callback) {
|
|
module.getListRange(key, 0, -1, function(err, set) {
|
|
module.set(key, set.splice(set.indexOf(value), 1), callback);
|
|
});
|
|
};
|
|
|
|
module.isSetMember = function(key, value, callback) {
|
|
module.getListRange(key, 0, -1, function(err, set) {
|
|
callback(err, set.indexOf(value) !== -1);
|
|
});
|
|
};
|
|
|
|
module.isSetMembers = function(key, values, callback) {
|
|
var members = {};
|
|
|
|
async.each(values, function(value, next) {
|
|
module.isSetMember(key, value, function(err, isMember) {
|
|
members[key] = isMember;
|
|
});
|
|
}, function(err) {
|
|
callback(err, members);
|
|
});
|
|
};
|
|
|
|
module.isMemberOfSets = function(sets, value, callback) {
|
|
helpers.iterator('isSetMember', sets, value, callback);
|
|
};
|
|
|
|
module.getSetMembers = function(key, callback) {
|
|
module.getListRange(key, 0, -1, function(err, set) {
|
|
callback(err, set);
|
|
});
|
|
};
|
|
|
|
module.getSetsMembers = function(keys, callback) {
|
|
throw new Error('not-implemented');
|
|
};
|
|
|
|
module.setCount = function(key, callback) {
|
|
module.getListRange(key, 0, -1, function(err, set) {
|
|
callback(err, set.length);
|
|
});
|
|
};
|
|
|
|
module.setRemoveRandom = function(key, callback) {
|
|
// how random is this? well, how random are the other implementations of this?
|
|
// imo rename this to setRemoveOne
|
|
|
|
module.getListRange(key, 1, -1, function(err, set) {
|
|
module.set(key, set, callback);
|
|
});
|
|
};
|
|
}; |