@tiledesk/tiledesk-server 2.3.72 → 2.3.74

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -5,6 +5,30 @@
5
5
  🚀 IN PRODUCTION 🚀
6
6
  (https://www.npmjs.com/package/@tiledesk/tiledesk-server/v/2.3.71)
7
7
 
8
+ # 2.3.73
9
+ - Removed unused mongoose-auto-increment dependency
10
+ - Removed version versions files
11
+ - Added attributes field to the project model and relative patch endpoint
12
+ - Message text validation only for the first message
13
+ - Updated tiledesk/tiledesk-tybot-connector@0.1.46
14
+ - Added an endpoint to patch the bot attributes
15
+ - Added Faq_kbSchema index({certified: 1, public: 1});
16
+ - Added ActivitySchema index({id_project: 1, createdAt: -1});
17
+ - Changed from .remove to findByIdAndRemove for faq remove endpoint to fix event emitter payload
18
+ - Updated tiledesk/tiledesk-tybot-connector@0.1.47
19
+ - Added caching for /widgets endpoint with invalidations
20
+ - Added bot rules to /widgets endpoint
21
+ - Select false for resetpswrequestid field of user model
22
+ - Added support for Public Private Key for JWT Auth with GLOBAL_SECRET_OR_PRIVATE_KEY and GLOBAL_SECRET_OR_PUB_KEY and GLOBAL_SECRET_ALGORITHM environments variables. If these properties are configured Public Private Key method is enabled otherwise if GLOBAL_SECRET env varible is configured the shared secret method is used. algorithm (default: HS256)
23
+ - Updated tiledesk/tiledesk-tybot-connector@0.1.48
24
+ - Removed “snapshot” from request payload for external chatbot
25
+
26
+
27
+
28
+ # 2.3.72
29
+ - Added Kaleyra module
30
+ - Updated tiledesk-apps to 1.0.12
31
+
8
32
  # 2.3.71
9
33
  - Email service send email direct fit without request_id
10
34
  - Removed strong from transcript email template
package/event/botEvent.js CHANGED
@@ -4,6 +4,8 @@ const Faq_kb = require('../models/faq_kb');
4
4
  var winston = require('../config/winston');
5
5
 
6
6
  class BotEvent extends EventEmitter {}
7
+ const cacheUtil = require("../utils/cacheUtil");
8
+ const cacheEnabler = require("../services/cacheEnabler");
7
9
 
8
10
  const botEvent = new BotEvent();
9
11
 
@@ -108,7 +110,17 @@ messageEvent.on('message.create', function(message) {
108
110
  }
109
111
 
110
112
 
111
- Faq_kb.findById(botId).exec(function(err, bot) {
113
+ let qbot = Faq_kb.findById(botId); //TODO add cache_bot_here
114
+
115
+ if (cacheEnabler.faq_kb) {
116
+ qbot.cache(cacheUtil.defaultTTL, message.id_project+":faq_kbs:id:"+botId)
117
+ winston.debug('faq_kb cache enabled');
118
+ }
119
+
120
+ qbot.exec(function(err, bot) {
121
+
122
+
123
+
112
124
  if (err) {
113
125
  winston.error('Error getting object.', err);
114
126
  return 0;
@@ -18,7 +18,7 @@ var UserUtil = require('../utils/userUtil');
18
18
  var jwt = require('jsonwebtoken');
19
19
  const url = require('url');
20
20
  var cacheUtil = require('../utils/cacheUtil');
21
-
21
+ var cacheEnabler = require("../services/cacheEnabler");
22
22
 
23
23
  const MaskData = require("maskdata");
24
24
 
@@ -34,7 +34,8 @@ const maskOptions = {
34
34
  };
35
35
 
36
36
 
37
- var configSecret = process.env.GLOBAL_SECRET || config.secret;
37
+ var configSecret = process.env.GLOBAL_SECRET_OR_PUB_KEY || process.env.GLOBAL_SECRET || config.secret;
38
+
38
39
 
39
40
  var maskedconfigSecret = MaskData.maskPhone(configSecret, maskOptions);
40
41
  winston.info('Authentication Global Secret : ' + maskedconfigSecret);
@@ -113,8 +114,18 @@ module.exports = function(passport) {
113
114
  return done(null, null);
114
115
  }
115
116
 
116
- winston.debug("bot id: "+ AudienceId );
117
- Faq_kb.findById(AudienceId).select('+secret').exec(function (err, faq_kb){
117
+ winston.debug("bot id AudienceId: "+ AudienceId );
118
+ let qbot = Faq_kb.findById(AudienceId).select('+secret');
119
+
120
+ if (cacheEnabler.faq_kb) {
121
+ let id_project = decoded.id_project;
122
+ winston.debug("decoded.id_project:"+decoded.id_project);
123
+ qbot.cache(cacheUtil.defaultTTL, id_project+":faq_kbs:id:"+AudienceId+":secret")
124
+ winston.debug('faq_kb AudienceId cache enabled');
125
+ }
126
+
127
+
128
+ qbot.exec(function (err, faq_kb){ //TODO add cache_bot_here
118
129
  if (err) {
119
130
  winston.error("auth Faq_kb err: ", {error: err, decoded:decoded} );
120
131
  return done(null, null);
@@ -179,17 +190,17 @@ module.exports = function(passport) {
179
190
 
180
191
  else if (decoded.aud == "https://tiledesk.com") {
181
192
  winston.debug("configSecret: "+ maskedconfigSecret );
182
- done(null, configSecret);
193
+ done(null, configSecret); //pub_jwt pp_jwt
183
194
  }
184
195
 
185
196
  else {
186
197
  winston.debug("configSecret: "+ maskedconfigSecret );
187
- done(null, configSecret);
198
+ done(null, configSecret); //pub_jwt pp_jwt
188
199
  }
189
200
  }
190
201
  else {
191
202
  winston.debug("configSecret: "+ maskedconfigSecret );
192
- done(null, configSecret);
203
+ done(null, configSecret); //pub_jwt pp_jwt
193
204
  }
194
205
  }
195
206
  }
@@ -246,7 +257,18 @@ module.exports = function(passport) {
246
257
 
247
258
  if (subject == "bot") {
248
259
  winston.debug("Passport JWT bot");
249
- Faq_kb.findOne({_id: identifier}, function(err, faq_kb) {
260
+
261
+ let qbot = Faq_kb.findOne({_id: identifier}); //TODO add cache_bot_here
262
+
263
+ if (cacheEnabler.faq_kb) {
264
+ let id_project = jwt_payload.id_project;
265
+ winston.debug("jwt_payload.id_project:"+jwt_payload.id_project);
266
+ qbot.cache(cacheUtil.defaultTTL, id_project+":faq_kbs:id:"+identifier)
267
+ winston.debug('faq_kb cache enabled');
268
+ }
269
+
270
+ qbot.exec(function(err, faq_kb) {
271
+
250
272
  if (err) {
251
273
  winston.error("Passport JWT bot err", err);
252
274
  return done(err, false);
@@ -325,9 +347,15 @@ module.exports = function(passport) {
325
347
 
326
348
  } else {
327
349
  winston.debug("Passport JWT generic user");
328
- User.findOne({_id: identifier, status: 100})
350
+ let quser = User.findOne({_id: identifier, status: 100}) //TODO user_cache_here
329
351
  //@DISABLED_CACHE .cache(cacheUtil.defaultTTL, "users:id:"+identifier)
330
- .exec(function(err, user) {
352
+
353
+ if (cacheEnabler.user) {
354
+ quser.cache(cacheUtil.defaultTTL, "users:id:"+identifier)
355
+ winston.debug('user cache enabled');
356
+ }
357
+
358
+ quser.exec(function(err, user) {
331
359
  if (err) {
332
360
  winston.error("Passport JWT generic err ", err);
333
361
  return done(err, false);
@@ -357,7 +385,7 @@ module.exports = function(passport) {
357
385
  var email = userid.toLowerCase();
358
386
  winston.debug("email lowercase: " + email);
359
387
 
360
- User.findOne({ email: email, status: 100}, 'email firstname lastname password emailverified id')
388
+ User.findOne({ email: email, status: 100}, 'email firstname lastname password emailverified id') //TODO user_cache_here. NOT used frequently. ma attento select. ATTENTO QUI NN USEREI LA SELECT altrimenti con JWT ho tuttto USER mentre con basich auth solo aluni campi
361
389
  //@DISABLED_CACHE .cache(cacheUtil.defaultTTL, "users:email:"+email)
362
390
  .exec(function (err, user) {
363
391
 
package/models/faq_kb.js CHANGED
@@ -95,6 +95,11 @@ Faq_kbSchema.virtual('fullName').get(function () {
95
95
  return (this.name);
96
96
  });
97
97
 
98
+ Faq_kbSchema.index({certified: 1, public: 1}); //suggested by atlas
99
+
100
+
101
+
102
+
98
103
  var faq_kb = mongoose.model('faq_kb', Faq_kbSchema);
99
104
 
100
105
  if (process.env.MONGOOSE_SYNCINDEX) {
@@ -5,7 +5,7 @@ var winston = require('../config/winston');
5
5
  var PresenceSchema = new Schema({
6
6
  status: {
7
7
  type: String,
8
- default: 'offline',
8
+ default: 'offline', //online
9
9
  required: true,
10
10
  index: true
11
11
  },
package/models/project.js CHANGED
@@ -68,6 +68,9 @@ var ProjectSchema = new Schema({
68
68
  type: String,
69
69
  select: false
70
70
  },
71
+ attributes: {
72
+ type: Object,
73
+ },
71
74
  // apiKey: { //You do want to block anonymous traffic. https://cloud.google.com/endpoints/docs/openapi/when-why-api-key#:~:text=API%20keys%20identify%20an%20application's,patterns%20in%20your%20API's%20traffic
72
75
  // type: String,
73
76
  // select: false,
package/models/user.js CHANGED
@@ -31,6 +31,7 @@ var UserSchema = new Schema({
31
31
  },
32
32
  resetpswrequestid: {
33
33
  type: String,
34
+ select: false
34
35
  },
35
36
  signedInAt: {
36
37
  type:Date
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@tiledesk/tiledesk-server",
3
3
  "description": "The Tiledesk server module",
4
- "version": "2.3.72",
4
+ "version": "2.3.74",
5
5
  "scripts": {
6
6
  "start": "node ./bin/www",
7
7
  "pretest": "mongodb-runner start",
@@ -43,7 +43,7 @@
43
43
  "@tiledesk/tiledesk-chatbot-util": "^0.8.33",
44
44
  "@tiledesk/tiledesk-json-rules-engine": "^4.0.3",
45
45
  "@tiledesk/tiledesk-rasa-connector": "^1.0.10",
46
- "@tiledesk/tiledesk-tybot-connector": "^0.1.42",
46
+ "@tiledesk/tiledesk-tybot-connector": "^0.1.50",
47
47
  "@tiledesk/tiledesk-dialogflow-connector": "^1.8.3",
48
48
  "app-root-path": "^3.0.0",
49
49
  "bcrypt-nodejs": "0.0.3",
@@ -83,6 +83,8 @@ var ActivitySchema = new Schema({
83
83
  }
84
84
  );
85
85
 
86
+ ActivitySchema.index({id_project: 1, createdAt: -1});
87
+
86
88
  // TODO metti indice per query è lentina
87
89
 
88
90
  module.exports = mongoose.model('activity', ActivitySchema);
@@ -2,6 +2,7 @@
2
2
  var messageEvent = require("../../event/messageEvent");
3
3
  var projectEvent = require("../../event/projectEvent");
4
4
  var botEvent = require("../../event/botEvent");
5
+ const faqBotEvent = require('../../event/faqBotEvent');
5
6
  var departmentEvent = require("../../event/departmentEvent");
6
7
  var authEvent = require("../../event/authEvent");
7
8
  var labelEvent = require("../../event/labelEvent");
@@ -14,6 +15,7 @@
14
15
  var cachegoose = require('cachegoose');
15
16
 
16
17
  var cacheUtil = require('../../utils/cacheUtil');
18
+ var RoleConstants = require("../../models/roleConstants");
17
19
 
18
20
 
19
21
 
@@ -28,6 +30,7 @@
28
30
  winston.debug("Created cache for project.create reply",reply);
29
31
  });
30
32
 
33
+ // TODO COMMENTA NON USATO
31
34
  key = "projects:query:*";
32
35
  winston.verbose("Deleting cache for project.create with key: " + key);
33
36
  client.del(key, function (err, reply) {
@@ -48,12 +51,17 @@
48
51
 
49
52
  });
50
53
 
54
+ // TODO COMMENTA NON USATO
51
55
  key = "projects:query:*";
52
- winston.verbose("Deleting cache for project.create with key: " + key);
56
+ winston.verbose("Deleting cache for project.update with key: " + key);
53
57
  client.del(key, function (err, reply) {
54
- winston.debug("Deleted cache for project.create",reply);
55
- winston.verbose("Deleted cache for project.create",{err:err});
58
+ winston.debug("Deleted cache for project.update",reply);
59
+ winston.verbose("Deleted cache for project.update",{err:err});
56
60
  });
61
+
62
+ // TODO invalidate widgets here
63
+ winston.verbose("Deleting widgets cache for project.update");
64
+ invalidateWidgets(client, project.id); //tested
57
65
  });
58
66
 
59
67
  });
@@ -67,6 +75,7 @@
67
75
  winston.verbose("Deleted cache for project.delete",{err:err});
68
76
  });
69
77
 
78
+ // TODO COMMENTA NON USATO
70
79
  key = "projects:query:*";
71
80
  winston.verbose("Deleting cache for project.create with key: " + key);
72
81
  client.del(key, function (err, reply) {
@@ -74,6 +83,10 @@
74
83
  winston.verbose("Deleted cache for project.create",{err:err});
75
84
  });
76
85
  });
86
+
87
+ // TODO invalidate widgets here
88
+ winston.verbose("Deleting widgets cache for project.delete");
89
+ invalidateWidgets(client, project.id);
77
90
  });
78
91
 
79
92
  projectEvent.on("project.downgrade", function(project) {
@@ -86,12 +99,17 @@
86
99
  winston.verbose("Updated cache for project.downgrade",{err:err});
87
100
  });
88
101
 
102
+ // TODO COMMENTA NON USATO
89
103
  key = "projects:query:*";
90
- winston.verbose("Deleting cache for project.create with key: " + key);
104
+ winston.verbose("Deleting cache for project.downgrade with key: " + key);
91
105
  client.del(key, function (err, reply) {
92
- winston.debug("Deleted cache for project.create",reply);
93
- winston.verbose("Deleted cache for project.create",{err:err});
94
- });
106
+ winston.debug("Deleted cache for project.downgrade",reply);
107
+ winston.verbose("Deleted cache for project.downgrade",{err:err});
108
+ });
109
+
110
+ // TODO invalidate widgets here
111
+ winston.verbose("Deleting widgets cache for project.downgrade");
112
+ invalidateWidgets(client, project.id);
95
113
  });
96
114
  });
97
115
 
@@ -153,6 +171,18 @@
153
171
  winston.verbose("Updated cache for project_user.update",{err:err});
154
172
  });
155
173
  }
174
+
175
+
176
+
177
+ // TODO invalidate widgets headers
178
+ // only if role is agent, owner, admin ATTENTION
179
+ if (role == RoleConstants.OWNER || role == RoleConstants.ADMIN || role == RoleConstants.SUPERVISOR || role == RoleConstants.AGENT) {
180
+ winston.verbose("Deleting widgets cache for project_user.update");
181
+ invalidateWidgets(client, project_user.id_project); //tested
182
+ }else {
183
+ winston.verbose("NOT invalidating widget cache for non admins project_user role");//tested
184
+ }
185
+
156
186
  });
157
187
  });
158
188
 
@@ -171,12 +201,13 @@
171
201
  winston.verbose("Created cache for user.signup",{err:err});
172
202
  });
173
203
 
174
- var key = "users:email:"+user.email;
175
- winston.verbose("Creating cache for user.signup with key: " + key);
176
- client.set(key, user, cacheUtil.defaultTTL, (err, reply) => {
177
- winston.debug("Created cache for user.signup",reply);
178
- winston.verbose("Created cache for user.signup",{err:err});
179
- });
204
+ // NOT IN USE (TESTED)
205
+ // var key = "users:email:"+user.email;
206
+ // winston.verbose("Creating cache for user.signup with key: " + key);
207
+ // client.set(key, user, cacheUtil.defaultTTL, (err, reply) => {
208
+ // winston.debug("Created cache for user.signup",reply);
209
+ // winston.verbose("Created cache for user.signup",{err:err});
210
+ // });
180
211
  });
181
212
  });
182
213
 
@@ -192,12 +223,13 @@
192
223
  winston.verbose("Updated cache for user.update",{err:err});
193
224
  });
194
225
 
195
- var key = "users:email:"+user.email;
196
- winston.verbose("Updating cache for user.update with key: " + key);
197
- client.set(key, user, cacheUtil.defaultTTL, (err, reply) => {
198
- winston.debug("Updated cache for user.update",reply);
199
- winston.verbose("Updated cache for user.update",{err:err});
200
- });
226
+ // NOT IN USE (TESTED)
227
+ // var key = "users:email:"+user.email;
228
+ // winston.verbose("Updating cache for user.update with key: " + key);
229
+ // client.set(key, user, cacheUtil.defaultTTL, (err, reply) => {
230
+ // winston.debug("Updated cache for user.update",reply);
231
+ // winston.verbose("Updated cache for user.update",{err:err});
232
+ // });
201
233
  });
202
234
  });
203
235
 
@@ -212,12 +244,13 @@
212
244
  winston.verbose("Deleted cache for user.delete",{err:err});
213
245
  });
214
246
 
215
- var key = "users:email:"+user.email;
216
- winston.verbose("Deleting cache for user.delete with key: " + key);
217
- client.del(key, (err, reply) => {
218
- winston.debug("Deleted cache for user.delete",reply);
219
- winston.verbose("Deleted cache for user.delete",{err:err});
220
- });
247
+ // NOT IN USE (TESTED)
248
+ // var key = "users:email:"+user.email;
249
+ // winston.verbose("Deleting cache for user.delete with key: " + key);
250
+ // client.del(key, (err, reply) => {
251
+ // winston.debug("Deleted cache for user.delete",reply);
252
+ // winston.verbose("Deleted cache for user.delete",{err:err});
253
+ // });
221
254
  });
222
255
  });
223
256
 
@@ -235,8 +268,8 @@
235
268
  });
236
269
 
237
270
 
238
- var key = "requests:id:"+request.request_id+":simple"; //without project for chat21 webhook
239
- winston.verbose("Creating cache for request.create.simple with key: " + key);
271
+ var key = "requests:request_id:"+request.request_id+":simple"; //without project for chat21 webhook
272
+ winston.verbose("Creating cache for request.create.simple without project with key : " + key);
240
273
 
241
274
  client.set(key, request, cacheUtil.defaultTTL, (err, reply) => {
242
275
  winston.debug("Created cache for request.create.simple",reply);
@@ -270,6 +303,7 @@
270
303
  winston.verbose("Created cache for request.create",{err:err});
271
304
  });
272
305
 
306
+ // TODO COMMENTA NON USATO
273
307
  key = request.id_project+":requests:query:*";
274
308
  winston.verbose("Deleting cache for request.create with key: " + key);
275
309
  client.del(key, function (err, reply) {
@@ -297,11 +331,12 @@
297
331
  winston.verbose("Created cache for request.update",{err:err});
298
332
  });
299
333
 
334
+ // TODO COMMENTA NON USATO
300
335
  key = request.id_project+":requests:query:*";
301
- winston.verbose("Deleting cache for request.create with key: " + key);
336
+ winston.verbose("Deleting cache for request.update with key: " + key);
302
337
  client.del(key, function (err, reply) {
303
- winston.debug("Deleted cache for request.create",reply);
304
- winston.verbose("Deleted cache for request.create",{err:err});
338
+ winston.debug("Deleted cache for request.update",reply);
339
+ winston.verbose("Deleted cache for request.update",{err:err});
305
340
  });
306
341
  });
307
342
  });
@@ -323,11 +358,12 @@
323
358
  winston.verbose("Created cache for request.close",{err:err});
324
359
  });
325
360
 
361
+ // TODO COMMENTA NON USATO
326
362
  key = request.id_project+":requests:query:*";
327
363
  winston.verbose("Deleting cache for request.create with key: " + key);
328
364
  client.del(key, function (err, reply) {
329
- winston.debug("Deleted cache for request.create",reply);
330
- winston.verbose("Deleted cache for request.create",{err:err});
365
+ winston.debug("Deleted cache for request.close",reply);
366
+ winston.verbose("Deleted cache for request.close",{err:err});
331
367
  });
332
368
  });
333
369
  });
@@ -362,6 +398,10 @@
362
398
  winston.debug("Created cache for faq_kb.create",reply);
363
399
  winston.verbose("Created cache for faq_kb.create",{err:err});
364
400
  });
401
+
402
+ // TODO invalidate widgets here
403
+ winston.verbose("Deleting widgets cache for faqbot.create");
404
+ invalidateWidgets(client, faq_kb.id_project); //tested
365
405
  });
366
406
  });
367
407
 
@@ -374,19 +414,69 @@
374
414
  client.set(key, faq_kb, cacheUtil.defaultTTL, (err, reply) => {
375
415
  winston.debug("Created cache for faq_kb.create",reply);
376
416
  winston.verbose("Created cache for faq_kb.update",{err:err});
377
- });
417
+ });
418
+
419
+
420
+ key = faq_kb.id_project+":faq_kbs:id:"+faq_kb._id+":secret";
421
+ winston.verbose("Deleting cache for faq_kb.update secret with key: " + key);
422
+ client.del(key, function (err, reply) { //tested
423
+ winston.debug("Deleted cache for faq_kb.update secret",reply);
424
+ winston.verbose("Deleted cache for faq_kb.update secret",{err:err});
425
+ });
426
+
427
+ // TODO invalidate widgets here
428
+ winston.verbose("Deleting widgets cache for faqbot.update");
429
+ invalidateWidgets(client, faq_kb.id_project); //TESTED
378
430
  });
379
431
  });
380
432
 
381
433
 
382
- botEvent.on("faqbot.delete", function(faq_kb) {
434
+ botEvent.on("faqbot.delete", function(faq_kb) { //LOGIC deletion for chatbot is used
383
435
  setImmediate(() => {
384
436
  var key = faq_kb.id_project+":faq_kbs:id:"+faq_kb._id;
385
- winston.verbose("Creating cache for faqbot.delete with key: " + key);
386
- client.set(key, faq_kb, cacheUtil.defaultTTL, (err, reply) => {
387
- winston.debug("Created cache for faqbot.delete",reply);
388
- winston.verbose("Created cache for faqbot.delete",{err:err});
437
+ winston.verbose("Deleting cache for faqbot.delete with key: " + key);
438
+ client.del(key, (err, reply) => {
439
+ winston.debug("Deleted cache for faqbot.delete",reply);
440
+ winston.verbose("Deleted cache for faqbot.delete",{err:err});
389
441
  });
442
+
443
+
444
+ key = faq_kb.id_project+":faq_kbs:id:"+faq_kb._id+":secret";
445
+ winston.verbose("Deleting cache for faq_kb.delete secret with key: " + key);
446
+ client.del(key, function (err, reply) {
447
+ winston.debug("Deleted cache for faq_kb.delete secret",reply);
448
+ winston.verbose("Deleted cache for faq_kb.delete secret",{err:err});
449
+ });
450
+
451
+ // TODO invalidate widgets here
452
+ winston.verbose("Deleting widgets cache for faqbot.delete");
453
+ invalidateWidgets(client, faq_kb.id_project); //tested
454
+ });
455
+ });
456
+
457
+
458
+
459
+ faqBotEvent.on("faq.create", function(faq) {
460
+ setImmediate(() => {
461
+ // TODO invalidate widgets here
462
+ winston.verbose("Deleting widgets cache for faq.create");
463
+ invalidateWidgets(client, faq.id_project); //tested
464
+ });
465
+ });
466
+
467
+ faqBotEvent.on("faq.update", function(faq) {
468
+ setImmediate(() => {
469
+ // TODO invalidate widgets here
470
+ winston.verbose("Deleting widgets cache for faq.update");
471
+ invalidateWidgets(client, faq.id_project);//tested
472
+ });
473
+ });
474
+
475
+ faqBotEvent.on("faq.delete", function(faq) {
476
+ setImmediate(() => {
477
+ // TODO invalidate widgets here
478
+ winston.verbose("Deleting widgets cache for faq.delete",faq);
479
+ invalidateWidgets(client, faq.id_project);//tested
390
480
  });
391
481
  });
392
482
 
@@ -400,12 +490,17 @@
400
490
  winston.verbose("Created cache for department.create",{err:err});
401
491
  });
402
492
 
493
+ // TODO COMMENTA NON USATO
403
494
  key = department.id_project+":departments:query:*";
404
495
  winston.verbose("Deleting cache for department.create with key: " + key);
405
496
  client.del(key, function (err, reply) {
406
497
  winston.debug("Deleted cache for department.create",reply);
407
498
  winston.verbose("Deleted cache for department.create",{err:err});
408
499
  });
500
+
501
+ // TODO invalidate widgets here
502
+ winston.verbose("Deleting widgets cache for department.create");
503
+ invalidateWidgets(client, department.id_project);
409
504
  });
410
505
  });
411
506
 
@@ -420,12 +515,17 @@
420
515
  winston.verbose("Created cache for department.update",{err:err});
421
516
  });
422
517
 
518
+ // TODO COMMENTA NON USATO
423
519
  key = department.id_project+":departments:query:*";
424
520
  winston.verbose("Deleting cache for department.update with key: " + key);
425
521
  client.del(key, function (err, reply) {
426
522
  winston.debug("Deleted cache for department.update",reply);
427
523
  winston.verbose("Deleted cache for department.update",{err:err});
428
524
  });
525
+
526
+ // TODO invalidate widgets here
527
+ winston.verbose("Deleting widgets cache for department.update");
528
+ invalidateWidgets(client, department.id_project); //tested
429
529
  });
430
530
  });
431
531
 
@@ -433,24 +533,31 @@
433
533
  departmentEvent.on("department.delete", function(department) {
434
534
  setImmediate(() => {
435
535
  var key = department.id_project+":departments:id:"+department._id;
436
- winston.verbose("Creating cache for department.delete with key: " + key);
437
- client.set(key, department, cacheUtil.defaultTTL, (err, reply) => {
438
- winston.debug("Created cache for department.delete",reply);
439
- winston.verbose("Created cache for department.delete",{err:err});
536
+ winston.verbose("Deleting cache for department.delete with key: " + key);
537
+ client.del(key, (err, reply) => {
538
+ winston.debug("Deleted cache for department.delete",reply);
539
+ winston.verbose("Deleted cache for department.delete",{err:err});
440
540
  });
441
541
 
542
+ // TODO COMMENTA NON USATO
442
543
  key = department.id_project+":departments:query:*";
443
544
  winston.verbose("Deleting cache for department.delete with key: " + key);
444
545
  client.del(key, function (err, reply) {
445
546
  winston.debug("Deleted cache for department.delete",reply);
446
547
  winston.verbose("Deleted cache for department.delete",{err:err});
447
548
  });
549
+
550
+ // TODO invalidate widgets here
551
+ winston.verbose("Deleting widgets cache for department.delete");
552
+ invalidateWidgets(client, department.id_project);
448
553
  });
449
554
  });
450
555
 
451
556
 
452
557
  labelEvent.on("label.create", function(label) {
453
558
  setImmediate(() => {
559
+
560
+ // TODO COMMENTA NON USATO
454
561
  var key = label.id_project+":labels:query:*";
455
562
  winston.verbose("Deleting cache for label.create with key: " + key);
456
563
  client.del(key, function (err, reply) {
@@ -464,6 +571,8 @@
464
571
 
465
572
  labelEvent.on("label.update", function(label) {
466
573
  setImmediate(() => {
574
+
575
+ // TODO COMMENTA NON USATO
467
576
  var key = label.id_project+":labels:query:*";
468
577
  winston.verbose("Deleting cache for label.update with key: " + key);
469
578
  client.del(key, function (err, reply) {
@@ -475,7 +584,9 @@
475
584
 
476
585
 
477
586
  labelEvent.on("label.clone", function(label) {
478
- setImmediate(() => {
587
+ setImmediate(() => {
588
+
589
+ // TODO COMMENTA NON USATO
479
590
  var key = label.id_project+":labels:query:*";
480
591
  winston.verbose("Deleting cache for label.clone with key: " + key);
481
592
  client.del(key, function (err, reply) {
@@ -488,6 +599,8 @@
488
599
 
489
600
  labelEvent.on("label.delete", function(label) {
490
601
  setImmediate(() => {
602
+
603
+ // TODO COMMENTA NON USATO
491
604
  var key = label.id_project+":labels:query:*";
492
605
  winston.verbose("Deleting cache for label.delete with key: " + key);
493
606
  client.del(key, function (err, reply) {
@@ -575,6 +688,17 @@
575
688
 
576
689
  }
577
690
 
691
+
692
+ function invalidateWidgets(client, project_id) {
693
+ key = project_id+":widgets";
694
+ winston.verbose("Deleting cache for widgets with key: " + key);
695
+ client.del(key, function (err, reply) {
696
+ winston.debug("Deleted cache for widgets",reply);
697
+ winston.verbose("Deleted cache for widgets",{err:err});
698
+ });
699
+ }
700
+
701
+
578
702
  //jwt
579
703
 
580
704
  // fai cache faq
@@ -616,8 +740,12 @@ module.exports = function (mongoose, option) {
616
740
 
617
741
  var client = cachegoose._cache;
618
742
  listen(client);
743
+
744
+ return cachegoose;
619
745
  }else {
620
746
  winston.info("Mongoose Cachegoose disabled");
747
+
748
+ return;
621
749
  }
622
750
 
623
751
  // console.log("init",init);