linagora-rse
Version:
55 lines (45 loc) • 1.57 kB
JavaScript
;
var mongoose = require('mongoose');
var User = mongoose.model('User');
var Community = mongoose.model('Community');
var esPlugin = require('./elasticsearch');
var userListener = require('../../../user/listener');
var communityListener = require('../../../community/listener');
var elasticSearch = require('../../../elasticsearch/listeners');
var logger = require('../../../logger');
function applyUserPlugins() {
User.schema.plugin(esPlugin(userListener.getOptions()));
}
module.exports.applyUserPlugins = applyUserPlugins;
function applyCommunityPlugins() {
Community.schema.plugin(esPlugin(communityListener.getOptions()));
}
module.exports.applyCommunityPlugins = applyCommunityPlugins;
function applyPlugins() {
applyUserPlugins();
applyCommunityPlugins();
}
module.exports.applyPlugins = applyPlugins;
function patchFindOneAndUpdate() {
var find = User.findOneAndUpdate;
User.findOneAndUpdate = function() {
var callback = arguments[arguments.length - 1];
var cb = function(err, result) {
if (err) {
return callback(err);
}
elasticSearch.index(result, userListener.getOptions(), function(indexErr, indexResult) {
if (indexErr) {
logger.error('Error while indexing data', indexErr);
}
if (indexResult) {
logger.debug('Data indexed', indexResult);
}
callback(err, result);
});
};
arguments[arguments.length - 1] = cb;
find.apply(this, arguments);
};
}
module.exports.patchFindOneAndUpdate = patchFindOneAndUpdate;