audiovanish-plugin-dbsearch
Version:
A Plugin that let's users search posts and tracks
51 lines (39 loc) • 1.23 kB
JavaScript
;
var redisSearch = require('redisearch');
var async = require.main.require('async');
module.exports = function(db) {
db.postSearch = redisSearch.createSearch('audiovanishpostsearch', db.client);
db.trackSearch = redisSearch.createSearch('audiovanishtracksearch', db.client);
db.searchIndex = function(key, data, ids, callback) {
var method = key === 'post' ? db.postSearch : db.trackSearch;
var indexData = ids.map(function(id, index) {
return {
id: id,
data: data[index]
};
});
async.eachLimit(indexData, 500, function(indexData, next) {
method.index(indexData.data, indexData.id, function(err, res) {
callback(err);
});
}, function(err) {
callback(err);
});
};
db.search = function(key, data, limit, callback) {
var method = key === 'post' ? db.postSearch : db.trackSearch;
method.query(data, 0, limit - 1, callback);
};
db.searchRemove = function(key, ids, callback) {
callback = callback || function() {};
if (!ids.length) {
return callback();
}
var method = key === 'post' ? db.postSearch : db.trackSearch;
async.eachLimit(ids, 500, function(id, next) {
method.remove(id, next);
}, function(err) {
callback(err);
});
};
};