@steedos/service-cachers-manager 3.0.0-beta.9 → 3.0.0-beta.90
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":";;;;AAOA,IAAM,OAAO,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAAC;AACpC,IAAA,cAAc,GAAK,OAAO,CAAC,gBAAgB,CAAC,eAA9B,CAA+B;AAC7C,IAAA,aAAa,GAAK,OAAO,CAAC,mBAAmB,CAAC,cAAjC,CAAkC;AAEvD;
|
|
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
|
-
|
|
53
|
-
|
|
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
|
-
|
|
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.
|
|
3
|
+
"version": "3.0.0-beta.90",
|
|
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.
|
|
12
|
-
"@steedos/metadata-registrar": "3.0.0-beta.
|
|
13
|
-
"@steedos/utils": "3.0.0-beta.
|
|
11
|
+
"@steedos/cachers": "3.0.0-beta.90",
|
|
12
|
+
"@steedos/metadata-registrar": "3.0.0-beta.90",
|
|
13
|
+
"@steedos/utils": "3.0.0-beta.90"
|
|
14
14
|
},
|
|
15
15
|
"publishConfig": {
|
|
16
16
|
"access": "public"
|
|
17
17
|
},
|
|
18
|
-
"gitHead": "
|
|
18
|
+
"gitHead": "196645f156c4c4cf4d07f288117c5e5d271bba0f"
|
|
19
19
|
}
|
package/package.service.js
CHANGED
|
@@ -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
|
-
|
|
117
|
-
|
|
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(
|
|
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
|
|
130
|
-
const { isUpdate, isAfter } =
|
|
140
|
+
const { data } = ctx.params
|
|
141
|
+
const { isUpdate, isAfter, doc, previousDoc} = data;
|
|
131
142
|
if (isAfter && isUpdate) {
|
|
132
|
-
auth.deleteSpaceCacheByChangedProp(
|
|
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
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
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
|
-
|
|
179
|
-
|
|
180
|
-
|
|
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
|
|
194
|
-
const { isUpdate, isAfter, isInsert, isDelete, doc, previousDoc } =
|
|
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
|
-
|
|
220
|
-
|
|
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) {
|