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

"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);
});
};
};