@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.
Files changed (2) hide show
  1. package/package.json +3 -3
  2. 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",
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.3"
8
+ "@steedos/cachers": "2.5.0-beta.30"
9
9
  },
10
10
  "publishConfig": {
11
11
  "access": "public"
12
12
  },
13
- "gitHead": "48546b91b2a44dd6f6673af7f5ab707faff6e07c"
13
+ "gitHead": "d33d736a3009ecfe57981d03d7062e52eaf27609"
14
14
  }
@@ -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: 2022-11-19 11:15:11
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
  };