@steedos/service-cachers-manager 3.0.0-beta.9 → 3.0.0-beta.92

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.
@@ -36,9 +36,7 @@ var MetadataCacherBase = (function () {
36
36
  var e_1, _a;
37
37
  return tslib_1.__generator(this, function (_b) {
38
38
  switch (_b.label) {
39
- case 0:
40
- console.log("".concat(this.collectionName, " init"));
41
- return [4, this.getCollection(this.collectionName)];
39
+ case 0: return [4, this.getCollection(this.collectionName)];
42
40
  case 1:
43
41
  coll = _b.sent();
44
42
  return [4, coll.find(this.query).toArray()];
@@ -1 +1 @@
1
- {"version":3,"file":"base.js","sourceRoot":"","sources":["../../src/metadata-cachers/base.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"base.js","sourceRoot":"","sources":["../../src/metadata-cachers/base.ts"],"names":[],"mappings":"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"}
@@ -49,16 +49,16 @@ module.exports = {
49
49
  case "workflow_notifications":
50
50
  self.workflowNotificationsCacher.handleAction(action, data);
51
51
  break;
52
- case "workflow_outbound_messages":
53
- self.workflowOutboundMessagesCacher.handleAction(action, data);
54
- break;
55
- case "workflow_rule":
56
- self.workflowRuleCacher.handleAction(action, data);
57
- break;
58
- default:
52
+ case "workflow_outbound_messages":
53
+ self.workflowOutboundMessagesCacher.handleAction(action, data);
59
54
  break;
60
- }
61
- },
55
+ case "workflow_rule":
56
+ self.workflowRuleCacher.handleAction(action, data);
57
+ break;
58
+ default:
59
+ break;
60
+ }
61
+ },
62
62
  },
63
63
 
64
64
  actions: {
@@ -68,7 +68,12 @@ module.exports = {
68
68
  filters,
69
69
  spaceId
70
70
  );
71
- return res || [];
71
+ // 先排序,让有 _id 的排在前面
72
+ const sortedData = _.sortBy(res || [], item => item._id ? 0 : 1);
73
+
74
+ // 然后使用 uniqBy 获取第一个(即有 _id 的优先)
75
+ const result = _.uniqBy(sortedData, 'name');
76
+ return result;
72
77
  },
73
78
  get: function (ctx) {
74
79
  const { _id, metadataName } = ctx.params;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@steedos/service-cachers-manager",
3
- "version": "3.0.0-beta.9",
3
+ "version": "3.0.0-beta.92",
4
4
  "main": "package.service.js",
5
5
  "license": "MIT",
6
6
  "private": false,
@@ -8,12 +8,12 @@
8
8
  "build": "rm -rf ./lib && tsc"
9
9
  },
10
10
  "dependencies": {
11
- "@steedos/cachers": "3.0.0-beta.9",
12
- "@steedos/metadata-registrar": "3.0.0-beta.9",
13
- "@steedos/utils": "3.0.0-beta.9"
11
+ "@steedos/cachers": "3.0.0-beta.92",
12
+ "@steedos/metadata-registrar": "3.0.0-beta.92",
13
+ "@steedos/utils": "3.0.0-beta.92"
14
14
  },
15
15
  "publishConfig": {
16
16
  "access": "public"
17
17
  },
18
- "gitHead": "9111ae9e9ce7c57c67c6bd670706f4344c28d69d"
18
+ "gitHead": "16a684ff645d0a9b745e4b49309f2c63d6a41395"
19
19
  }
@@ -15,6 +15,7 @@ const auth = require('@steedos/auth');
15
15
  const { getObject } = require('@steedos/objectql');
16
16
  const register = require('@steedos/metadata-registrar');
17
17
  const _ = require('underscore');
18
+ const lodash = require('lodash');
18
19
  /**
19
20
  * @typedef {import('moleculer').Context} Context Moleculer's Context
20
21
  * 软件包服务启动后也需要抛出事件。
@@ -112,11 +113,16 @@ module.exports = {
112
113
  * 当space_users属性值发生变更后清除userSession缓存
113
114
  */
114
115
  "@space_users.updated": {
115
- handler(ctx) {
116
- const params = ctx.params
117
- const { isUpdate, isAfter } = params;
116
+ async handler(ctx) {
117
+ await ctx.broker.call('b6-microservice.broadcast', {name: '@space_users.updated', data: ctx.params})
118
+ }
119
+ },
120
+ "$broadcast.@space_users.updated": {
121
+ async handler(ctx){
122
+ const { data } = ctx.params;
123
+ const { isUpdate, isAfter, doc, previousDoc } = data;
118
124
  if (isAfter && isUpdate) {
119
- auth.deleteSpaceUserSessionCacheByChangedProp(params.doc, params.previousDoc)
125
+ auth.deleteSpaceUserSessionCacheByChangedProp(doc, previousDoc)
120
126
  }
121
127
  }
122
128
  },
@@ -125,11 +131,16 @@ module.exports = {
125
131
  * 当spaces属性值发生变更后清除spaces缓存
126
132
  */
127
133
  "@spaces.updated": {
134
+ async handler(ctx) {
135
+ await ctx.broker.call('b6-microservice.broadcast', {name: '@spaces.updated', data: ctx.params})
136
+ }
137
+ },
138
+ "$broadcast.@spaces.updated":{
128
139
  handler(ctx) {
129
- const params = ctx.params
130
- const { isUpdate, isAfter } = params;
140
+ const { data } = ctx.params
141
+ const { isUpdate, isAfter, doc, previousDoc} = data;
131
142
  if (isAfter && isUpdate) {
132
- auth.deleteSpaceCacheByChangedProp(params.doc, params.previousDoc)
143
+ auth.deleteSpaceCacheByChangedProp(doc, previousDoc)
133
144
  }
134
145
  }
135
146
  },
@@ -163,24 +174,28 @@ module.exports = {
163
174
  const objects = {}
164
175
  const objectConfigs = await this.broker.call("objects.getAll");
165
176
  for (const object of objectConfigs) {
166
- const objectConfig = object.metadata
167
- const objectName = objectConfig.name
168
- // 排除 __MONGO_BASE_OBJECT __SQL_BASE_OBJECT
169
- if (['__MONGO_BASE_OBJECT', '__SQL_BASE_OBJECT'].includes(objectName)) {
170
- continue
171
- }
172
-
173
- const obj = getObject(objectName);
174
- if (!objects[objectName]) {
175
- objects[objectName] = {}
176
- }
177
+ try {
178
+ const objectConfig = object.metadata
179
+ const objectName = objectConfig.name
180
+ // 排除 __MONGO_BASE_OBJECT __SQL_BASE_OBJECT
181
+ if (['__MONGO_BASE_OBJECT', '__SQL_BASE_OBJECT'].includes(objectName)) {
182
+ continue
183
+ }
177
184
 
178
- //TODO 确认 delete\directDelete 功能
179
- _.each(['find', 'count', 'findOne', 'insert', 'update', 'delete', 'directFind', 'directInsert', 'directUpdate', 'directDelete'], (funKey) => {
180
- objects[objectName][funKey] = function (...args) {
181
- return obj[funKey].apply(obj, args) // 重写this为obj, 防止this异常
185
+ const obj = getObject(objectName);
186
+ if (!objects[objectName]) {
187
+ objects[objectName] = {}
182
188
  }
183
- })
189
+
190
+ //TODO 确认 delete\directDelete 功能
191
+ _.each(['find', 'count', 'findOne', 'insert', 'update', 'delete', 'directFind', 'directInsert', 'directUpdate', 'directDelete'], (funKey) => {
192
+ objects[objectName][funKey] = function (...args) {
193
+ return obj[funKey].apply(obj, args) // 重写this为obj, 防止this异常
194
+ }
195
+ })
196
+ } catch (error) {
197
+ console.log(error)
198
+ }
184
199
  };
185
200
  // console.log('===========global.objects===========');
186
201
  // console.log(objects)
@@ -188,16 +203,31 @@ module.exports = {
188
203
  }
189
204
  },
190
205
  "@permission_set.*": {
206
+ async handler(ctx) {
207
+ await ctx.broker.call('b6-microservice.broadcast', {name: '@permission_set.*', data: ctx.params})
208
+ }
209
+ },
210
+ "$broadcast.@permission_set.*": {
191
211
  async handler(ctx) {
192
212
  // 数据库数据变化后,重新加载缓存
193
- const params = ctx.params
194
- const { isUpdate, isAfter, isInsert, isDelete, doc, previousDoc } = params;
213
+ const { data } = ctx.params
214
+ const { isUpdate, isAfter, isInsert, isDelete, doc, previousDoc } = data;
195
215
  if (isAfter && (isUpdate || isInsert || isDelete) && ('profile' === (doc || {}).type || 'profile' === (previousDoc || {}).type)) {
196
216
  // 先清理缓存
197
217
  cachers.clearCacher('profiles');
198
218
  // 重新添加缓存
199
219
  await this.loadProfiles();
200
220
  }
221
+ if(isUpdate && isAfter && doc.type === 'permission_set'){
222
+ const noChanges = lodash.intersection(doc.users, previousDoc.users);
223
+ const mergedArray = lodash.concat(doc.users, previousDoc.users);
224
+ for (const userId of mergedArray) {
225
+ if(!lodash.includes(noChanges, userId)){
226
+ console.log('removeSpaceUserSessionFromCache', userId)
227
+ await auth.removeSpaceUserSessionFromCache(doc.space, userId);
228
+ }
229
+ }
230
+ }
201
231
  }
202
232
  },
203
233
  "$METADATA.profiles.*": {
@@ -216,8 +246,13 @@ module.exports = {
216
246
  },
217
247
  "$user.logout": {
218
248
  async handler(ctx) {
219
- const { authToken } = ctx.params;
220
- auth.removeUserTokenByToken(authToken)
249
+ await ctx.broker.call('b6-microservice.broadcast', {name: '$user.logout', data: ctx.params})
250
+ }
251
+ },
252
+ "$broadcast.$user.logout": {
253
+ async handler(ctx) {
254
+ const { data } = ctx.params;
255
+ auth.removeUserTokenByToken(data.authToken)
221
256
  }
222
257
  }
223
258
  },
@@ -265,6 +300,7 @@ module.exports = {
265
300
  this.loadActionTriggers(this.broker);
266
301
  this.loadTriggers(this.broker);
267
302
  this.loadProfiles();
303
+ // eslint-disable-next-line @typescript-eslint/no-require-imports, no-undef
268
304
  this.broker.createService(require("./metadata-cachers.service"));
269
305
  },
270
306
 
@@ -25,7 +25,6 @@ export class MetadataCacherBase {
25
25
  }
26
26
 
27
27
  async init() {
28
- console.log(`${this.collectionName} init`);
29
28
  const coll = await this.getCollection(this.collectionName);
30
29
  const records = await coll.find(this.query).toArray();
31
30
  for (const record of records) {