@steedos/service-cachers-manager 2.5.0-beta.3 → 2.5.0-beta.30
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/package.json +3 -3
- package/package.service.js +71 -2
package/package.json
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@steedos/service-cachers-manager",
|
|
3
|
-
"version": "2.5.0-beta.
|
|
3
|
+
"version": "2.5.0-beta.30",
|
|
4
4
|
"main": "package.service.js",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"private": false,
|
|
7
7
|
"dependencies": {
|
|
8
|
-
"@steedos/cachers": "2.5.0-beta.
|
|
8
|
+
"@steedos/cachers": "2.5.0-beta.30"
|
|
9
9
|
},
|
|
10
10
|
"publishConfig": {
|
|
11
11
|
"access": "public"
|
|
12
12
|
},
|
|
13
|
-
"gitHead": "
|
|
13
|
+
"gitHead": "d33d736a3009ecfe57981d03d7062e52eaf27609"
|
|
14
14
|
}
|
package/package.service.js
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* @Author: baozhoutao@steedos.com
|
|
3
3
|
* @Date: 2022-03-28 09:35:35
|
|
4
4
|
* @LastEditors: baozhoutao@steedos.com
|
|
5
|
-
* @LastEditTime:
|
|
5
|
+
* @LastEditTime: 2023-04-26 12:06:14
|
|
6
6
|
* @Description: 维护内存缓存
|
|
7
7
|
*/
|
|
8
8
|
"use strict";
|
|
@@ -10,7 +10,8 @@ const project = require('./package.json');
|
|
|
10
10
|
const serviceName = project.name;
|
|
11
11
|
const core = require('@steedos/core');
|
|
12
12
|
const cachers = require('@steedos/cachers');
|
|
13
|
-
const auth = require('@steedos/auth')
|
|
13
|
+
const auth = require('@steedos/auth');
|
|
14
|
+
const { getObject } = require('@steedos/objectql');
|
|
14
15
|
/**
|
|
15
16
|
* @typedef {import('moleculer').Context} Context Moleculer's Context
|
|
16
17
|
* 软件包服务启动后也需要抛出事件。
|
|
@@ -31,11 +32,19 @@ module.exports = {
|
|
|
31
32
|
*/
|
|
32
33
|
dependencies: [],
|
|
33
34
|
methods: {
|
|
35
|
+
// 加载mo action规则的triggers
|
|
34
36
|
loadActionTriggers: async function (broker) {
|
|
35
37
|
const cache = cachers.getCacher('action-triggers');
|
|
36
38
|
broker.call('triggers.getAll').then((res)=>{
|
|
37
39
|
cache.set('triggerActions', res);
|
|
38
40
|
})
|
|
41
|
+
},
|
|
42
|
+
// 加载 steedos 规则的triggers
|
|
43
|
+
loadTriggers: async function(broker){
|
|
44
|
+
const cache = cachers.getCacher('triggers');
|
|
45
|
+
broker.call('object_triggers.getAll').then((res)=>{
|
|
46
|
+
cache.set('triggers', res);
|
|
47
|
+
})
|
|
39
48
|
}
|
|
40
49
|
},
|
|
41
50
|
|
|
@@ -73,6 +82,11 @@ module.exports = {
|
|
|
73
82
|
this.loadActionTriggers(ctx.broker);
|
|
74
83
|
}
|
|
75
84
|
},
|
|
85
|
+
"metadata.object_triggers.change": {
|
|
86
|
+
handler(ctx){
|
|
87
|
+
this.loadTriggers(ctx.broker);
|
|
88
|
+
}
|
|
89
|
+
},
|
|
76
90
|
/**
|
|
77
91
|
* userSession支持实时更新
|
|
78
92
|
* 当space_users属性值发生变更后清除userSession缓存
|
|
@@ -99,11 +113,66 @@ module.exports = {
|
|
|
99
113
|
}
|
|
100
114
|
}
|
|
101
115
|
},
|
|
116
|
+
"$services.changed": {
|
|
117
|
+
async handler(ctx) {
|
|
118
|
+
const { broker } = ctx
|
|
119
|
+
const _services = broker.registry.getServiceList({ skipInternal: true, withActions: true });
|
|
120
|
+
const globalServicesVars = {};
|
|
121
|
+
for (const service of _services) {
|
|
122
|
+
const { name: serviceName, actions } = service
|
|
123
|
+
if(!globalServicesVars[serviceName]){
|
|
124
|
+
globalServicesVars[serviceName] = {};
|
|
125
|
+
}
|
|
126
|
+
for (const key in actions) {
|
|
127
|
+
if (Object.prototype.hasOwnProperty.call(actions, key)) {
|
|
128
|
+
const rawName = actions[key].rawName;
|
|
129
|
+
globalServicesVars[serviceName][rawName] = async function(params, opts){
|
|
130
|
+
return await broker.call(key, params, opts)
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
global.services = globalServicesVars;
|
|
136
|
+
// console.log('===========global.services===========');
|
|
137
|
+
// console.log(global.services)
|
|
138
|
+
}
|
|
139
|
+
},
|
|
140
|
+
"$packages.changed": {
|
|
141
|
+
params: {},
|
|
142
|
+
async handler(ctx) {
|
|
143
|
+
const objects = {}
|
|
144
|
+
const objectConfigs = await this.broker.call("objects.getAll");
|
|
145
|
+
for (const object of objectConfigs) {
|
|
146
|
+
const objectConfig = object.metadata
|
|
147
|
+
const objectName = objectConfig.name
|
|
148
|
+
// 排除 __MONGO_BASE_OBJECT __SQL_BASE_OBJECT
|
|
149
|
+
if (['__MONGO_BASE_OBJECT', '__SQL_BASE_OBJECT'].includes(objectName)) {
|
|
150
|
+
continue
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
const obj = getObject(objectName);
|
|
154
|
+
if(!objects[objectName]){
|
|
155
|
+
objects[objectName] = {}
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
//TODO 确认 delete\directDelete 功能
|
|
159
|
+
_.each(['find', 'count', 'findOne', 'insert', 'update', 'delete', 'directFind', 'directInsert', 'directUpdate', 'directDelete'], (funKey)=>{
|
|
160
|
+
objects[objectName][funKey] = function(...args){
|
|
161
|
+
return obj[funKey].apply(obj, args) // 重写this为obj, 防止this异常
|
|
162
|
+
}
|
|
163
|
+
})
|
|
164
|
+
};
|
|
165
|
+
// console.log('===========global.objects===========');
|
|
166
|
+
// console.log(objects)
|
|
167
|
+
global.objects = objects;
|
|
168
|
+
}
|
|
169
|
+
}
|
|
102
170
|
},
|
|
103
171
|
|
|
104
172
|
async started() {
|
|
105
173
|
core.loadTranslations();
|
|
106
174
|
core.loadObjectTranslations();
|
|
107
175
|
this.loadActionTriggers(this.broker);
|
|
176
|
+
this.loadTriggers(this.broker);
|
|
108
177
|
},
|
|
109
178
|
};
|