@steedos/service-metadata-objects 2.1.78 → 2.1.85
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/lib/actionsHandler.d.ts +2 -1
- package/lib/actionsHandler.js +67 -22
- package/lib/actionsHandler.js.map +1 -1
- package/lib/formula/core.js +7 -5
- package/lib/formula/core.js.map +1 -1
- package/lib/formula/field_formula.js +16 -11
- package/lib/formula/field_formula.js.map +1 -1
- package/lib/formula/formulaActionHandler.js +25 -25
- package/lib/formula/formulaActionHandler.js.map +1 -1
- package/lib/formula/util.js +20 -13
- package/lib/formula/util.js.map +1 -1
- package/lib/lookup/LookupActionHandler.js +12 -12
- package/lib/lookup/LookupActionHandler.js.map +1 -1
- package/lib/master-detail/masterDetailActionHandler.js +31 -30
- package/lib/master-detail/masterDetailActionHandler.js.map +1 -1
- package/lib/objects/fields/index.js +1 -1
- package/lib/objects/fields/index.js.map +1 -1
- package/lib/objects/index.js +26 -6
- package/lib/objects/index.js.map +1 -1
- package/lib/objects.service.js +44 -36
- package/lib/objects.service.js.map +1 -1
- package/lib/summary/summaryActionHandler.js +18 -18
- package/lib/summary/summaryActionHandler.js.map +1 -1
- package/package.json +3 -4
- package/src/actionsHandler.ts +56 -11
- package/src/objects/index.ts +27 -1
- package/src/objects.service.ts +11 -4
package/src/actionsHandler.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import _ = require("lodash");
|
|
2
2
|
import { METADATA_TYPE } from ".";
|
|
3
|
-
import { getObjectServiceName, getOriginalObject, refreshObject } from "./objects";
|
|
3
|
+
import { getObjectServiceName, getOriginalObject, refreshObject, MONGO_BASE_OBJECT, SQL_BASE_OBJECT } from "./objects";
|
|
4
4
|
export type SObject = {
|
|
5
5
|
name: string,
|
|
6
6
|
[x: string]: any
|
|
@@ -26,7 +26,7 @@ export class ActionHandlers {
|
|
|
26
26
|
onRegister: any = null;
|
|
27
27
|
onDestroy: any = null;
|
|
28
28
|
onRegistered: any = null;
|
|
29
|
-
registerObjectMemEntry: Map<string,
|
|
29
|
+
registerObjectMemEntry: Map<string, any>;
|
|
30
30
|
|
|
31
31
|
constructor(onRegister, onDestroy, onRegistered){
|
|
32
32
|
this.onRegister = onRegister;
|
|
@@ -36,11 +36,13 @@ export class ActionHandlers {
|
|
|
36
36
|
}
|
|
37
37
|
|
|
38
38
|
async registerObject(ctx, objectApiName, data, meta) {
|
|
39
|
-
if(
|
|
39
|
+
if (objectApiName != MONGO_BASE_OBJECT &&
|
|
40
|
+
objectApiName != SQL_BASE_OBJECT && this.onRegister && _.isFunction(this.onRegister)) {
|
|
40
41
|
await this.onRegister(data)
|
|
41
42
|
}
|
|
42
43
|
await ctx.broker.call('metadata.add', {key: cacherKey(objectApiName), data: data}, {meta: meta});
|
|
43
|
-
if(
|
|
44
|
+
if (objectApiName != MONGO_BASE_OBJECT &&
|
|
45
|
+
objectApiName != SQL_BASE_OBJECT && this.onRegistered && _.isFunction(this.onRegistered)) {
|
|
44
46
|
await this.onRegistered(data)
|
|
45
47
|
}
|
|
46
48
|
// 为每个对象 setTimeout 延时执行
|
|
@@ -51,7 +53,7 @@ export class ActionHandlers {
|
|
|
51
53
|
}
|
|
52
54
|
timeoutId = setTimeout(function(){
|
|
53
55
|
ctx.broker.emit("metadata.objects.inserted", {objectApiName: objectApiName, isInsert: true});
|
|
54
|
-
|
|
56
|
+
ctx.broker.broadcast(`${data.datasource}.@${objectApiName}.metadata.objects.inserted`, { objectApiName: objectApiName, isInsert: true, data: data });
|
|
55
57
|
registerObjectMemEntry.delete(objectApiName);
|
|
56
58
|
}, DELAY_MESSAGE_OF_OBJECT_CHANGED);
|
|
57
59
|
registerObjectMemEntry.set(objectApiName, timeoutId);
|
|
@@ -95,19 +97,24 @@ export class ActionHandlers {
|
|
|
95
97
|
metadataType: METADATA_TYPE,
|
|
96
98
|
metadataApiName: metadataApiName,
|
|
97
99
|
}, {meta: ctx.meta});
|
|
98
|
-
|
|
99
|
-
if(metadataConfig && metadataConfig.metadata){
|
|
100
|
+
|
|
101
|
+
if (metadataConfig && metadataConfig.metadata) {
|
|
100
102
|
config.list_views = _.defaultsDeep(metadataConfig.metadata.list_views || {}, config.list_views || {});
|
|
101
103
|
config = _.defaultsDeep(config, metadataConfig.metadata);
|
|
102
104
|
}
|
|
103
105
|
}
|
|
104
|
-
|
|
106
|
+
|
|
107
|
+
await ctx.broker.call('metadata.addServiceMetadata', { key: cacherKey(metadataApiName), data: config }, { meta: Object.assign({}, ctx.meta, { metadataType: METADATA_TYPE, metadataApiName: metadataApiName }) })
|
|
108
|
+
|
|
105
109
|
const objectConfig = await refreshObject(ctx, metadataApiName);
|
|
106
|
-
|
|
107
|
-
|
|
110
|
+
|
|
111
|
+
if (!objectConfig) {
|
|
112
|
+
return;
|
|
108
113
|
}
|
|
114
|
+
|
|
109
115
|
const objectServiceName = getObjectServiceName(metadataApiName);
|
|
110
|
-
|
|
116
|
+
|
|
117
|
+
const result = await this.registerObject(ctx, metadataApiName, objectConfig, {
|
|
111
118
|
caller: {
|
|
112
119
|
// nodeID: broker.nodeID,
|
|
113
120
|
service: {
|
|
@@ -117,6 +124,44 @@ export class ActionHandlers {
|
|
|
117
124
|
}
|
|
118
125
|
}
|
|
119
126
|
});
|
|
127
|
+
return result;
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
async addConfigs(ctx: any): Promise<boolean> {
|
|
131
|
+
let configs = ctx.params.data;
|
|
132
|
+
for (let config of configs) {
|
|
133
|
+
if (config.extend) {
|
|
134
|
+
config.name = config.extend
|
|
135
|
+
}
|
|
136
|
+
const metadataApiName = config.name;
|
|
137
|
+
if (!config.isMain) {
|
|
138
|
+
const metadataConfig = await ctx.broker.call('metadata.getServiceMetadata', {
|
|
139
|
+
serviceName: ctx.meta.metadataServiceName,
|
|
140
|
+
metadataType: METADATA_TYPE,
|
|
141
|
+
metadataApiName: metadataApiName,
|
|
142
|
+
}, { meta: ctx.meta });
|
|
143
|
+
if (metadataConfig && metadataConfig.metadata) {
|
|
144
|
+
config.list_views = _.defaultsDeep(metadataConfig.metadata.list_views || {}, config.list_views || {});
|
|
145
|
+
config = _.defaultsDeep(config, metadataConfig.metadata);
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
await ctx.broker.call('metadata.addServiceMetadata', { key: cacherKey(metadataApiName), data: config }, { meta: Object.assign({}, ctx.meta, { metadataType: METADATA_TYPE, metadataApiName: metadataApiName }) })
|
|
149
|
+
const objectConfig = await refreshObject(ctx, metadataApiName);
|
|
150
|
+
if (!objectConfig) {
|
|
151
|
+
return;
|
|
152
|
+
}
|
|
153
|
+
const objectServiceName = getObjectServiceName(metadataApiName);
|
|
154
|
+
await this.registerObject(ctx, metadataApiName, objectConfig, {
|
|
155
|
+
caller: {
|
|
156
|
+
// nodeID: broker.nodeID,
|
|
157
|
+
service: {
|
|
158
|
+
name: objectServiceName,
|
|
159
|
+
// version: broker.service.version, TODO
|
|
160
|
+
// fullName: broker.service.fullName, TODO
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
});
|
|
164
|
+
}
|
|
120
165
|
}
|
|
121
166
|
|
|
122
167
|
async change(ctx: any): Promise<boolean> {
|
package/src/objects/index.ts
CHANGED
|
@@ -11,6 +11,19 @@ export function getObjectServiceName(objectApiName: string) {
|
|
|
11
11
|
return `@${objectApiName}`;
|
|
12
12
|
}
|
|
13
13
|
|
|
14
|
+
function isExpried(expiredAt: number) {
|
|
15
|
+
return expiredAt <= new Date().getTime();
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
const BASE_OBJECT_CACHE = {
|
|
19
|
+
[MONGO_BASE_OBJECT]: {
|
|
20
|
+
data: null,
|
|
21
|
+
},
|
|
22
|
+
[SQL_BASE_OBJECT]: {
|
|
23
|
+
data: null,
|
|
24
|
+
}
|
|
25
|
+
};
|
|
26
|
+
|
|
14
27
|
async function getBaseObjectConfig(ctx, datasourceName) {
|
|
15
28
|
const serviceName = "*";
|
|
16
29
|
const metadataType = METADATA_TYPE;
|
|
@@ -18,12 +31,25 @@ async function getBaseObjectConfig(ctx, datasourceName) {
|
|
|
18
31
|
if (datasourceName === "default" || datasourceName === "meteor") {
|
|
19
32
|
metadataApiName = MONGO_BASE_OBJECT;
|
|
20
33
|
}
|
|
34
|
+
|
|
35
|
+
const cacheData = BASE_OBJECT_CACHE[metadataApiName];
|
|
36
|
+
if (cacheData && cacheData.data && isExpried(cacheData.expiredAt)) {
|
|
37
|
+
return cacheData.data;
|
|
38
|
+
}
|
|
39
|
+
|
|
21
40
|
const configs = await ctx.broker.call(`metadata.getServiceMetadatas`, {
|
|
22
41
|
serviceName,
|
|
23
42
|
metadataType,
|
|
24
43
|
metadataApiName: metadataApiName,
|
|
25
44
|
}, {meta: ctx.meta});
|
|
26
|
-
|
|
45
|
+
|
|
46
|
+
const config = configs && configs.length > 0 ? configs[0]?.metadata : null;
|
|
47
|
+
BASE_OBJECT_CACHE[metadataApiName] = {
|
|
48
|
+
data: config,
|
|
49
|
+
expiredAt: new Date().getTime() + 10 * 1000
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
return config;
|
|
27
53
|
}
|
|
28
54
|
|
|
29
55
|
async function getObjectConfigs(ctx, objectApiName) {
|
package/src/objects.service.ts
CHANGED
|
@@ -5,6 +5,8 @@ import { FormulaActionHandler } from './formula/formulaActionHandler';
|
|
|
5
5
|
import { SummaryActionHandler } from './summary/summaryActionHandler';
|
|
6
6
|
import { LookupActionHandler } from './lookup/LookupActionHandler';
|
|
7
7
|
import { METADATA_TYPE } from '.';
|
|
8
|
+
import * as _ from 'lodash';
|
|
9
|
+
|
|
8
10
|
module.exports = {
|
|
9
11
|
name: "objects",
|
|
10
12
|
/**
|
|
@@ -70,6 +72,11 @@ module.exports = {
|
|
|
70
72
|
return await this.objetActionHandlers.addConfig(ctx);
|
|
71
73
|
}
|
|
72
74
|
},
|
|
75
|
+
addConfigs: {
|
|
76
|
+
async handler(ctx) {
|
|
77
|
+
return await this.objetActionHandlers.addConfigs(ctx);
|
|
78
|
+
}
|
|
79
|
+
},
|
|
73
80
|
change: {
|
|
74
81
|
async handler(ctx) {
|
|
75
82
|
return await this.objetActionHandlers.change(ctx);
|
|
@@ -175,11 +182,11 @@ module.exports = {
|
|
|
175
182
|
const mastersInfo = this.masterDetailActionHandler.getMastersInfoKey(objectApiName);
|
|
176
183
|
const lookupDetailsInfo = this.lookupActionHandler.getDetailsInfoKey(objectApiName);
|
|
177
184
|
|
|
178
|
-
const results = await ctx.broker.call('metadata.
|
|
185
|
+
const results = await ctx.broker.call('metadata.mfilter', { keys: [detailsInfoKey, mastersInfo, lookupDetailsInfo] });
|
|
179
186
|
return {
|
|
180
|
-
details: results[0],
|
|
181
|
-
masters: results[1],
|
|
182
|
-
lookup_details: results[2],
|
|
187
|
+
details: _.compact(_.map(results[0], 'metadata')),
|
|
188
|
+
masters: _.compact(_.map(results[1], 'metadata')),
|
|
189
|
+
lookup_details: _.compact(_.map(results[2], 'metadata')),
|
|
183
190
|
}
|
|
184
191
|
}
|
|
185
192
|
},
|