UNPKG

@tiledesk/tiledesk-server

Version:
943 lines (739 loc) 41.2 kB
var requestEvent = require("../../event/requestEvent"); var messageEvent = require("../../event/messageEvent"); var projectEvent = require("../../event/projectEvent"); var botEvent = require("../../event/botEvent"); const faqBotEvent = require('../../event/faqBotEvent'); var departmentEvent = require("../../event/departmentEvent"); var authEvent = require("../../event/authEvent"); var labelEvent = require("../../event/labelEvent"); var integrationEvent = require("../../event/integrationEvent"); var triggerEventEmitter = require("../trigger/event/triggerEventEmitter"); var subscriptionEvent = require("../../event/subscriptionEvent"); var winston = require('../../config/winston'); var cachegoose = require('cachegoose'); var cacheUtil = require('../../utils/cacheUtil'); var RoleConstants = require("../../models/roleConstants"); async function del(client, key, callback) { key = "cacheman:cachegoose-cache:" + key; winston.debug("key: "+key) // client.del(key, function (err, data) { // if (err) { // return callback(error); // } else { // winston.info("del data: "+ data) // return callback(null, data); // } // }); // client.del(key).then(function(result) { // winston.info("result", result) // return callback(null, result); // }).catch(function(error) { // winston.error("here3", error) // return callback(error); // }); var res = await client.del(key) winston.debug("result: "+ res) if (res) { return callback(null, res); } else { var error = "error"; return callback(error); } } function listen(client) { projectEvent.on("project.create", function(project) { setImmediate(() => { var key = "projects:id:"+project.id; winston.verbose("Creating cache for project.create with key: " + key); client.set(key, project, cacheUtil.longTTL, (err, reply) => { winston.verbose("Created cache for project.create",{err:err}); winston.debug("Created cache for project.create reply",reply); }); // TODO COMMENTA NON USATO // key = "projects:query:*"; // winston.verbose("Deleting cache for project.create with key: " + key); // client.del(key, function (err, reply) { // winston.verbose("Deleted cache for project.create",{err:err}); // winston.debug("Deleted cache for project.create",reply); // }); }); }); projectEvent.on("project.update", function(project) { setImmediate(() => { var key = "projects:id:"+project.id; winston.verbose("Updating cache for project.update with key: " + key); client.set(key, project, cacheUtil.longTTL, (err, reply) => { winston.verbose("Updated cache for project.update",{err:err}); winston.debug("Updated cache for project.update",reply); }); // TODO COMMENTA NON USATO // key = "projects:query:*"; // winston.verbose("Deleting cache for project.update with key: " + key); // client.del(key, function (err, reply) { // winston.debug("Deleted cache for project.update",reply); // winston.verbose("Deleted cache for project.update",{err:err}); // }); // TODO invalidate widgets here winston.verbose("Deleting widgets cache for project.update"); invalidateWidgets(client, project.id); //tested }); }); projectEvent.on("project.delete", function(project) { setImmediate(() => { var key = "projects:id:"+project.id; winston.verbose("Deleting cache for project.delete with key: " + key); // found del del(client._cache._engine.client, key, function (err, reply) { //tested // client.del(key, (err, reply) => { winston.debug("Deleted cache for project.delete",reply); winston.verbose("Deleted cache for project.delete",{err:err}); }); // TODO COMMENTA NON USATO // key = "projects:query:*"; // winston.verbose("Deleting cache for project.create with key: " + key); // client.del(key, function (err, reply) { // winston.debug("Deleted cache for project.create",reply); // winston.verbose("Deleted cache for project.create",{err:err}); // }); }); // TODO invalidate widgets here winston.verbose("Deleting widgets cache for project.delete"); invalidateWidgets(client, project.id); }); projectEvent.on("project.downgrade", function(project) { setImmediate(() => { var key = "projects:id:"+project.id; winston.verbose("Updating cache for project.downgrade with key: " + key); client.set(key, project, cacheUtil.longTTL, (err, reply) => { winston.debug("Updated cache for project.downgrade",reply); winston.verbose("Updated cache for project.downgrade",{err:err}); }); // TODO COMMENTA NON USATO // key = "projects:query:*"; // winston.verbose("Deleting cache for project.downgrade with key: " + key); // client.del(key, function (err, reply) { // winston.debug("Deleted cache for project.downgrade",reply); // winston.verbose("Deleted cache for project.downgrade",{err:err}); // }); // TODO invalidate widgets here winston.verbose("Deleting widgets cache for project.downgrade"); invalidateWidgets(client, project.id); }); }); authEvent.on('project_user.update', function(data) { setImmediate(() => { var project_user = data.updatedProject_userPopulated; var key = project_user.id_project+":project_users:id:"+project_user.id; winston.verbose("Updating cache for project_user.update with key: " + key); client.set(key, project_user, cacheUtil.defaultTTL, (err, reply) => { winston.debug("Updated cache for project_user.update",reply); winston.verbose("Updated cache for project_user.update",{err:err}); }); if (project_user.id_user) { var key = project_user.id_project+":project_users:iduser:"+project_user.id_user; winston.verbose("Updating cache for project_user.update with key: " + key); client.set(key, project_user, cacheUtil.defaultTTL, (err, reply) => { winston.debug("Updated cache for project_user.update",reply); winston.verbose("Updated cache for project_user.update",{err:err}); }); } if (project_user.uuid_user) { var key = project_user.id_project+":project_users:uuid_user:"+project_user.uuid_user; winston.verbose("Updating cache for project_user.update with key: " + key); client.set(key, project_user, cacheUtil.defaultTTL, (err, reply) => { winston.debug("Updated cache for project_user.update",reply); winston.verbose("Updated cache for project_user.update",{err:err}); }); } var role = project_user.role; var TEAMMATE_ROLES = { "agent": ["guest","user","agent"], "admin": ["guest","user","agent", "admin",], "owner": ["guest","user","agent", "admin", "owner"], } // controllare bene var hierarchicalRoles = TEAMMATE_ROLES[role]; winston.debug("hierarchicalRoles", hierarchicalRoles); if ( hierarchicalRoles && hierarchicalRoles.includes(role)) { var key = project_user.id_project+":project_users:role:teammate:"+project_user.id; winston.verbose("Updating cache for project_user.update with key: " + key); client.set(key, project_user, cacheUtil.defaultTTL, (err, reply) => { winston.debug("Updated cache for project_user.update",reply); winston.verbose("Updated cache for project_user.update",{err:err}); }); } // TODO invalidate widgets headers // only if role is agent, owner, admin ATTENTION if (role == RoleConstants.OWNER || role == RoleConstants.ADMIN || role == RoleConstants.SUPERVISOR || role == RoleConstants.AGENT) { winston.verbose("Deleting widgets cache for project_user.update"); invalidateWidgets(client, project_user.id_project); //tested }else { winston.verbose("NOT invalidating widget cache for non admins project_user role");//tested } }); }); authEvent.on('user.signup', function(data) { setImmediate(() => { var user = data.savedUser; var key = "users:id:"+user.id; winston.verbose("Creating cache for user.signup with key: " + key); client.set(key, user, cacheUtil.defaultTTL, (err, reply) => { winston.debug("Created cache for user.signup",reply); winston.verbose("Created cache for user.signup",{err:err}); }); // NOT IN USE (TESTED) // var key = "users:email:"+user.email; // winston.verbose("Creating cache for user.signup with key: " + key); // client.set(key, user, cacheUtil.defaultTTL, (err, reply) => { // winston.debug("Created cache for user.signup",reply); // winston.verbose("Created cache for user.signup",{err:err}); // }); }); }); authEvent.on('user.update', function(data) { setImmediate(() => { var user = data.updatedUser; var key = "users:id:"+user.id; winston.verbose("Updating cache for user.update with key: " + key); client.set(key, user, cacheUtil.defaultTTL, (err, reply) => { winston.debug("Updated cache for user.update",reply); winston.verbose("Updated cache for user.update",{err:err}); }); // NOT IN USE (TESTED) // var key = "users:email:"+user.email; // winston.verbose("Updating cache for user.update with key: " + key); // client.set(key, user, cacheUtil.defaultTTL, (err, reply) => { // winston.debug("Updated cache for user.update",reply); // winston.verbose("Updated cache for user.update",{err:err}); // }); }); }); authEvent.on('user.delete', function(data) { setImmediate(() => { var user = data.user; var key = "users:id:"+user.id; winston.verbose("Deleting cache for user.delete with key: " + key); // found del del(client._cache._engine.client, key, function (err, reply) { //tested // client.del(key, (err, reply) => { winston.debug("Deleted cache for user.delete",reply); winston.verbose("Deleted cache for user.delete",{err:err}); }); // NOT IN USE (TESTED) // var key = "users:email:"+user.email; // winston.verbose("Deleting cache for user.delete with key: " + key); // client.del(key, (err, reply) => { // winston.debug("Deleted cache for user.delete",reply); // winston.verbose("Deleted cache for user.delete",{err:err}); // }); }); }); requestEvent.on("request.create.simple", function(request) { setImmediate(() => { var key = request.id_project+":requests:id:"+request.id+":simple"; winston.verbose("Creating cache for request.create.simple with key: " + key); client.set(key, request, cacheUtil.defaultTTL, (err, reply) => { winston.debug("Created cache for request.create.simple",reply); winston.verbose("Created cache for request.create.simple",{err:err}); }); var key = "requests:request_id:"+request.request_id+":simple"; //without project for chat21 webhook winston.verbose("Creating cache for request.create.simple without project with key : " + key); client.set(key, request, cacheUtil.defaultTTL, (err, reply) => { winston.debug("Created cache for request.create.simple",reply); winston.verbose("Created cache for request.create.simple",{err:err}); }); var key = request.id_project+":requests:request_id:"+request.request_id+":simple"; winston.verbose("Creating cache for request.create.simple with key: " + key); client.set(key, request, cacheUtil.defaultTTL, (err, reply) => { winston.debug("Created cache for request.create.simple",reply); winston.verbose("Created cache for request.create.simple",{err:err}); }); }) }); function invalidatRequestSimple(client, project_id, rid, request_id) { var key = project_id+":requests:id:"+rid+":simple"; winston.verbose("Deleting cache for widgets with key: " + key); // found del winston.debug("Deleted4545"); del(client._cache._engine.client, key, function (err, reply) { //tested // client.del(key, function (err, reply) { winston.debug("Deleted cache for invalidatRequestSimple",reply); winston.verbose("Deleted cache for invalidatRequestSimple",{err:err}); }); key = "requests:request_id:"+request_id+":simple"; //without project for chat21 webhook winston.verbose("Creating cache for request.create.simple for invalidatRequestSimple without project with key : " + key); // found del del(client._cache._engine.client, key, function (err, reply) { //tested // client.del(key, function (err, reply) { winston.debug("Deleted cache for invalidatRequestSimple",reply); winston.verbose("Deleted cache for invalidatRequestSimple",{err:err}); }); key = project_id+":requests:request_id:"+request_id+":simple"; winston.verbose("Creating cache for request.create.simple for invalidatRequestSimple with key: " + key); // found del del(client._cache._engine.client, key, function (err, reply) { //tested // client.del(key, function (err, reply) { winston.debug("Deleted cache for invalidatRequestSimple",reply); winston.verbose("Deleted cache for invalidatRequestSimple",{err:err}); }); } requestEvent.on("request.create", function(request) { setImmediate(() => { var key = request.id_project+":requests:id:"+request.id; winston.verbose("Creating cache for request.create with key: " + key); client.set(key, request, cacheUtil.defaultTTL, (err, reply) => { winston.debug("Created cache for request.create",reply); winston.verbose("Created cache for request.create",{err:err}); }); var key = request.id_project+":requests:request_id:"+request.request_id; winston.verbose("Creating cache for request.create with key: " + key); client.set(key, request, cacheUtil.defaultTTL, (err, reply) => { winston.debug("Created cache for request.create",reply); winston.verbose("Created cache for request.create",{err:err}); }); // TODO COMMENTA NON USATO // key = request.id_project+":requests:query:*"; // winston.verbose("Deleting cache for request.create with key: " + key); // client.del(key, function (err, reply) { // winston.debug("Deleted cache for request.create",reply); // winston.verbose("Deleted cache for request.create",{err:err}); // }); }); }); requestEvent.on("request.update", function(request) { setImmediate(() => { var key = request.id_project+":requests:id:"+request.id; winston.verbose("Creating cache for request.update with key: " + key); client.set(key, request, cacheUtil.defaultTTL, (err, reply) => { winston.debug("Created cache for request.update",reply); winston.verbose("Created cache for request.update",{err:err}); }); var key = request.id_project+":requests:request_id:"+request.request_id; winston.verbose("Creating cache for request.update with key: " + key); client.set(key, request, cacheUtil.defaultTTL, (err, reply) => { winston.debug("Created cache for request.update",reply); winston.verbose("Created cache for request.update",{err:err}); }); // TODO COMMENTA NON USATO // key = request.id_project+":requests:query:*"; // winston.verbose("Deleting cache for request.update with key: " + key); // client.del(key, function (err, reply) { // winston.debug("Deleted cache for request.update",reply); // winston.verbose("Deleted cache for request.update",{err:err}); // }); invalidatRequestSimple(client, request.id_project, request.id, request.request_id) }); }); requestEvent.on("request.close", function(request) { setImmediate(() => { var key = request.id_project+":requests:id:"+request.id; winston.verbose("Creating cache for request.close with key: " + key); client.set(key, request, cacheUtil.defaultTTL, (err, reply) => { winston.debug("Created cache for request.close",reply); winston.verbose("Created cache for request.close",{err:err}); }); var key = request.id_project+":requests:request_id:"+request.request_id; winston.verbose("Creating cache for request.close with key: " + key); client.set(key, request, cacheUtil.defaultTTL, (err, reply) => { winston.debug("Created cache for request.close",reply); winston.verbose("Created cache for request.close",{err:err}); }); // TODO COMMENTA NON USATO // key = request.id_project+":requests:query:*"; // winston.verbose("Deleting cache for request.create with key: " + key); // client.del(key, function (err, reply) { // winston.debug("Deleted cache for request.close",reply); // winston.verbose("Deleted cache for request.close",{err:err}); // }); invalidatRequestSimple(client, request.id_project, request.id, request.request_id) }); }); // non serve tanto // messageEvent.on("message.create", function(message) { // setImmediate(() => { // var key = message.id_project+":requests:id:"+message.request._id + ":messages:id:" + message._id; // winston.verbose("Creating cache for message.create with key: " + key); // client.set(key, message, cacheUtil.defaultTTL, (err, reply) => { // winston.verbose("Created cache for message.create",{err:err, reply:reply}); // }); // var key = message.id_project+":requests:request_id:"+message.request.request_id + ":messages:id:" + message._id; // winston.verbose("Creating cache for message.create with key: " + key); // client.set(key, message, cacheUtil.defaultTTL, (err, reply) => { // winston.verbose("Created cache for message.create",{err:err, reply:reply}); // }); // }); // }); botEvent.on("faqbot.create", function(faq_kb) { setImmediate(() => { let clonedbot = Object.assign({}, faq_kb); delete clonedbot.secret; var key = faq_kb.id_project+":faq_kbs:id:"+faq_kb._id; winston.verbose("Creating cache for faq_kb.create with key: " + key); client.set(key, clonedbot, cacheUtil.defaultTTL, (err, reply) => { winston.debug("Created cache for faq_kb.create",reply); winston.verbose("Created cache for faq_kb.create",{err:err}); }); // TODO invalidate widgets here winston.verbose("Deleting widgets cache for faqbot.create"); invalidateWidgets(client, faq_kb.id_project); //tested }); }); botEvent.on("faqbot.update", function(faq_kb) { setImmediate(() => { var key = faq_kb.id_project+":faq_kbs:id:"+faq_kb._id; winston.verbose("Creating cache for faq_kb.update with key: " + key); client.set(key, faq_kb, cacheUtil.defaultTTL, (err, reply) => { winston.debug("Created cache for faq_kb.create",reply); winston.verbose("Created cache for faq_kb.update",{err:err}); }); key = faq_kb.id_project+":faq_kbs:id:"+faq_kb._id+":secret"; winston.verbose("Deleting cache for faq_kb.update secret with key: " + key); // found del // winston.info("quiqui", client._cache); del(client._cache._engine.client, key, function (err, reply) { //tested // client.del(key, function (err, reply) { //tested winston.debug("Deleted cache for faq_kb.update secret",reply); winston.verbose("Deleted cache for faq_kb.update secret",{err:err}); }); // without project for tilebot key = "faq_kbs:id:"+faq_kb._id; winston.verbose("Deleting cache for faq_kb.update without project for tilebot with key: " + key); // found del del(client._cache._engine.client, key, function (err, reply) { //tested // client.del(key, function (err, reply) { winston.debug("Deleted cache for faq_kb.update without project for tilebot ",reply); winston.verbose("Deleted cache for faq_kb.update without project for tilebot ",{err:err}); }); // TODO invalidate widgets here winston.verbose("Deleting widgets cache for faqbot.update"); invalidateWidgets(client, faq_kb.id_project); //TESTED }); }); botEvent.on("faqbot.delete", function(faq_kb) { //LOGIC deletion for chatbot is used setImmediate(() => { var key = faq_kb.id_project+":faq_kbs:id:"+faq_kb._id; winston.verbose("Deleting cache for faqbot.delete with key: " + key); // found del del(client._cache._engine.client, key, function (err, reply) { //tested // client.del(key, (err, reply) => { winston.debug("Deleted cache for faqbot.delete",reply); winston.verbose("Deleted cache for faqbot.delete",{err:err}); }); key = faq_kb.id_project+":faq_kbs:id:"+faq_kb._id+":secret"; winston.verbose("Deleting cache for faq_kb.delete secret with key: " + key); // found del del(client._cache._engine.client, key, function (err, reply) { //tested // client.del(key, function (err, reply) { winston.debug("Deleted cache for faq_kb.delete secret",reply); winston.verbose("Deleted cache for faq_kb.delete secret",{err:err}); }); // without project for tilebot key = "faq_kbs:id:"+faq_kb._id; winston.verbose("Deleting cache for faq_kb.update without project for tilebot with key: " + key); // found del del(client._cache._engine.client, key, function (err, reply) { //tested // client.del(key, function (err, reply) { winston.debug("Deleted cache for faq_kb.update without project for tilebot ",reply); winston.verbose("Deleted cache for faq_kb.update without project for tilebot ",{err:err}); }); // TODO invalidate widgets here winston.verbose("Deleting widgets cache for faqbot.delete"); invalidateWidgets(client, faq_kb.id_project); //tested }); }); faqBotEvent.on("faq.create", function(faq) { setImmediate(() => { // TODO invalidate widgets here winston.verbose("Deleting widgets cache for faq.create"); invalidateWidgets(client, faq.id_project); //tested }); }); faqBotEvent.on("faq.update", function(faq) { setImmediate(() => { invalidateFaq(client, faq); // TODO invalidate widgets here winston.verbose("Deleting widgets cache for faq.update"); invalidateWidgets(client, faq.id_project);//tested }); }); faqBotEvent.on("faq.delete", function(faq) { setImmediate(() => { invalidateFaq(client, faq); // TODO invalidate widgets here winston.verbose("Deleting widgets cache for faq.delete",faq); invalidateWidgets(client, faq.id_project);//tested }); }); departmentEvent.on("department.create", function(department) { setImmediate(() => { var key = department.id_project+":departments:id:"+department._id; winston.verbose("Creating cache for department.create with key: " + key); client.set(key, department, cacheUtil.defaultTTL, (err, reply) => { winston.debug("Created cache for department.create",reply); winston.verbose("Created cache for department.create",{err:err}); }); // TODO COMMENTA NON USATO // key = department.id_project+":departments:query:*"; // winston.verbose("Deleting cache for department.create with key: " + key); // client.del(key, function (err, reply) { // winston.debug("Deleted cache for department.create",reply); // winston.verbose("Deleted cache for department.create",{err:err}); // }); // TODO invalidate widgets here winston.verbose("Deleting widgets cache for department.create"); invalidateWidgets(client, department.id_project); }); }); departmentEvent.on("department.update", function(department) { setImmediate(() => { var key = department.id_project+":departments:id:"+department._id; winston.verbose("Creating cache for department.update with key: " + key); client.set(key, department, cacheUtil.defaultTTL, (err, reply) => { winston.debug("Created cache for department.update",reply); winston.verbose("Created cache for department.update",{err:err}); }); // TODO COMMENTA NON USATO // key = department.id_project+":departments:query:*"; // winston.verbose("Deleting cache for department.update with key: " + key); // client.del(key, function (err, reply) { // winston.debug("Deleted cache for department.update",reply); // winston.verbose("Deleted cache for department.update",{err:err}); // }); // TODO invalidate widgets here winston.verbose("Deleting widgets cache for department.update"); invalidateWidgets(client, department.id_project); //tested }); }); departmentEvent.on("department.delete", function(department) { setImmediate(() => { var key = department.id_project+":departments:id:"+department._id; winston.verbose("Deleting cache for department.delete with key: " + key); // found del del(client._cache._engine.client, key, function (err, reply) { //tested // client.del(key, (err, reply) => { winston.debug("Deleted cache for department.delete",reply); winston.verbose("Deleted cache for department.delete",{err:err}); }); // TODO COMMENTA NON USATO // key = department.id_project+":departments:query:*"; // winston.verbose("Deleting cache for department.delete with key: " + key); // client.del(key, function (err, reply) { // winston.debug("Deleted cache for department.delete",reply); // winston.verbose("Deleted cache for department.delete",{err:err}); // }); // TODO invalidate widgets here winston.verbose("Deleting widgets cache for department.delete"); invalidateWidgets(client, department.id_project); }); }); labelEvent.on("label.create", function(label) { setImmediate(() => { // TODO COMMENTA NON USATO // var key = label.id_project+":labels:query:*"; // winston.verbose("Deleting cache for label.create with key: " + key); // client.del(key, function (err, reply) { // winston.debug("Deleted cache for label.create",reply); // winston.verbose("Deleted cache for label.create",{err:err}); // }); }); }); labelEvent.on("label.update", function(label) { setImmediate(() => { // TODO COMMENTA NON USATO // var key = label.id_project+":labels:query:*"; // winston.verbose("Deleting cache for label.update with key: " + key); // client.del(key, function (err, reply) { // winston.debug("Deleted cache for label.update",reply); // winston.verbose("Deleted cache for label.update",{err:err}); // }); }); }); labelEvent.on("label.clone", function(label) { setImmediate(() => { // TODO COMMENTA NON USATO // var key = label.id_project+":labels:query:*"; // winston.verbose("Deleting cache for label.clone with key: " + key); // client.del(key, function (err, reply) { // winston.debug("Deleted cache for label.clone",reply); // winston.verbose("Deleted cache for label.clone",{err:err}); // }); }); }); labelEvent.on("label.delete", function(label) { setImmediate(() => { // TODO COMMENTA NON USATO // var key = label.id_project+":labels:query:*"; // winston.verbose("Deleting cache for label.delete with key: " + key); // client.del(key, function (err, reply) { // winston.debug("Deleted cache for label.delete",reply); // winston.verbose("Deleted cache for label.delete",{err:err}); // }); }); }); // l'evento è relativo a tutte le integrazioni, è sufficiente solo un evento // per create, update, delete di una singola creation integrationEvent.on("integration.update", (integrations, id_project) => { let key = "project:" + id_project + ":integrations"; winston.verbose("Creating cache for integration.create with key: " + key); client.set(key, integrations, cacheUtil.longTTL, (err, reply) => { winston.verbose("Created cache for integration.create", {err: err} ); winston.debug("Created cache for integration.create reply", reply); }) }) // fai cache per subscription.create, .update .delete if (subscriptionEvent) { subscriptionEvent.on('subscription.create', function(subscription) { setImmediate(() => { //TODO i think you must clone trigger and remove .secret before caching // q.cache(cacheUtil.longTTL, id_project+":subscriptions:event:"+event); //CACHE_SUBSCRIPTION var key =subscription.id_project+":subscriptions:event:"+subscription.event; // var key =trigger.id_project+":subscriptions:*"; //wildcardcache //tested winston.verbose("Deleting cache for subscription.create with key: " + key); // found del del(client._cache._engine.client, key, function (err, reply) { //tested // client.del(key, function (err, reply) { winston.debug("Deleted cache for subscription.create",reply); winston.verbose("Deleted cache for subscription.create",{err:err}); }); }); }); subscriptionEvent.on('subscription.update', function(subscription) { setImmediate(() => { var key =subscription.id_project+":subscriptions:event:"+subscription.event; // var key =subscription.id_project+":subscriptions:*"; //wildcardcache //tested winston.verbose("Deleting cache for subscription.update with key: " + key); // found del del(client._cache._engine.client, key, function (err, reply) { //tested // client.del(key, function (err, reply) { winston.debug("Deleted cache for subscription.update",reply); winston.verbose("Deleted cache for subscription.update",{err:err}); }); }); }); subscriptionEvent.on("subscription.delete", function(subscription) { setImmediate(() => { var key =subscription.id_project+":subscriptions:event:"+subscription.event; // var key =subscription.id_project+":subscriptions:*"; //wildcardcache //tested winston.verbose("Deleting cache for subscription.delete with key: " + key); // found del del(client._cache._engine.client, key, function (err, reply) { //tested // client.del(key, function (err, reply) { winston.debug("Deleted cache for subscription.delete",reply); winston.verbose("Deleted cache for subscription.delete",{err:err}); }); }); }); } if (triggerEventEmitter) { triggerEventEmitter.on('trigger.create', function(trigger) { setImmediate(() => { var key =trigger.id_project+":triggers:trigger.key:"+trigger.trigger.key; // var key =trigger.id_project+":triggers:*"; //wildcardcache //tested winston.verbose("Deleting cache for trigger.create with key: " + key); // found del del(client._cache._engine.client, key, function (err, reply) { //tested // client.del(key, function (err, reply) { winston.debug("Deleted cache for trigger.create",reply); winston.verbose("Deleted cache for trigger.create",{err:err}); }); }); }); triggerEventEmitter.on('trigger.update', function(trigger) { setImmediate(() => { var key =trigger.id_project+":triggers:trigger.key:"+trigger.trigger.key; // var key =trigger.id_project+":triggers:*"; //wildcardcache //tested winston.verbose("Deleting cache for trigger.update with key: " + key); // found del del(client._cache._engine.client, key, function (err, reply) { //tested // client.del(key, function (err, reply) { winston.debug("Deleted cache for trigger.update",reply); winston.verbose("Deleted cache for trigger.update",{err:err}); }); }); }); triggerEventEmitter.on("trigger.delete", function(trigger) { setImmediate(() => { var key =trigger.id_project+":triggers:trigger.key:"+trigger.trigger.key; // var key =trigger.id_project+":triggers:*"; //wildcardcache winston.verbose("Deleting cache for trigger.delete with key: " + key); // found del del(client._cache._engine.client, key, function (err, reply) { //tested // client.del(key, function (err, reply) { winston.debug("Deleted cache for trigger.delete",reply); winston.verbose("Deleted cache for trigger.delete",{err:err}); }); }); }); } function invalidateFaq(client, faq) { // let faqCacheKey = "cacheman:cachegoose-cache:faqs:botid:"+ botId + ":faq:id:" + key; //cacheman:cachegoose-cache:faqs:botid:647dc3e8da041c001396f764:faq:id:647dc3ea61ad510014ca0b46 key = "faqs:botid:"+faq.id_faq_kb+":faq:id:"+faq.intent_display_name; // key = "faqs:botid:"+faq.id_faq_kb+":faq:id:"+faq._id; // key = "faqs:botid:"+faq.id_faq_kb+":faq:id:*"; winston.verbose("Deleting cache for faq with key: " + key); // found del del(client._cache._engine.client, key, function (err, reply) { //tested // client.del(key, function (err, reply) { winston.debug("Deleted cache for faq",reply); winston.verbose("Deleted cache for faq",{err:err}); }); key = "faqs:botid:"+faq.id_faq_kb+":faq:id:#"+faq.intent_id; winston.verbose("Deleting cache for faq with key: " + key); // found del del(client._cache._engine.client, key, function (err, reply) { //tested // client.del(key, function (err, reply) { winston.debug("Deleted cache for faq",reply); winston.verbose("Deleted cache for faq",{err:err}); }); } function invalidateWidgets(client, project_id) { let key = project_id+":widgets"; winston.verbose("Deleting cache for widgets with key: " + key); // found del del(client._cache._engine.client, key, function (err, reply) { //tested // client.del(key, function (err, reply) { winston.debug("Deleted cache for widgets",reply); winston.verbose("Deleted cache for widgets",{err:err}); }); } //jwt // fai cache faq } module.exports = function (mongoose, option) { if (process.env.CACHE_ENABLED == true || process.env.CACHE_ENABLED == "true") { var engine = process.env.CACHE_ENGINE; winston.debug("Redis engine: "+ engine); // var endPoint = process.env.CACHE_REDIS_ENDPOINT || "redis://127.0.0.1:6379"; // winston.debug("Redis endpoint: "+ endPoint); var port = process.env.CACHE_REDIS_PORT || 6379; winston.debug("Redis port: "+ port); var host = process.env.CACHE_REDIS_HOST || "127.0.0.1" winston.debug("Redis host: "+ host); var password = process.env.CACHE_REDIS_PASSWORD; winston.debug("Redis password: "+ password); winston.info("Mongoose Cachegoose fn initialized, engine: " + engine + ", port: "+ port + ", host: "+ host + " defaultTTL: " +cacheUtil.defaultTTL + ", password: "+ password); // winston.info("Mongoose Cachegoose fn initialized, engine: " + engine + ", endpoint: "+endPoint +", port: "+ port + ", host: "+ host + ", password: "+ password); // cachegoose(mongoose, endPoint); cachegoose(mongoose, { engine: engine, /* If you don't specify the redis engine, */ port: port, /* the query results will be cached in memory. */ host: host, password: password }); var client = cachegoose._cache; // winston.info("client client", client); // winston.info("client _cache._engine", client._cache._engine); // winston.info("client _cache._engine.client", client._cache._engine.client); listen(client); return cachegoose; }else { winston.info("Mongoose Cachegoose disabled"); return; } // console.log("init",init); // console.log("cachegoose._cache",cachegoose._cache); // cachegoose._cache.get("/projects/5ea800091147f28c72b90c5e", (err, cachedResults) => { // // console.log("cachedResults",cachedResults); // }); }