@steedos/service-metadata-objects 2.2.55-beta.7 → 2.3.0-beta.3
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.js +1 -37
- package/lib/actionsHandler.js.map +1 -1
- package/lib/formula/core.d.ts +0 -11
- package/lib/formula/core.js +0 -12
- package/lib/formula/core.js.map +1 -1
- package/lib/formula/field_formula.d.ts +0 -23
- package/lib/formula/field_formula.js +1 -34
- package/lib/formula/field_formula.js.map +1 -1
- package/lib/formula/formulaActionHandler.d.ts +0 -13
- package/lib/formula/formulaActionHandler.js +1 -58
- package/lib/formula/formulaActionHandler.js.map +1 -1
- package/lib/formula/type.d.ts +0 -52
- package/lib/formula/type.js +0 -4
- package/lib/formula/type.js.map +1 -1
- package/lib/formula/util.d.ts +0 -38
- package/lib/formula/util.js +0 -39
- package/lib/formula/util.js.map +1 -1
- package/lib/lookup/LookupActionHandler.js +0 -13
- package/lib/lookup/LookupActionHandler.js.map +1 -1
- package/lib/master-detail/masterDetailActionHandler.d.ts +0 -18
- package/lib/master-detail/masterDetailActionHandler.js +2 -78
- package/lib/master-detail/masterDetailActionHandler.js.map +1 -1
- package/lib/objects/fields/index.js +7 -42
- package/lib/objects/fields/index.js.map +1 -1
- package/lib/objects/index.js +0 -16
- package/lib/objects/index.js.map +1 -1
- package/lib/objects/translationTemplate.js +0 -7
- package/lib/objects/translationTemplate.js.map +1 -1
- package/lib/objects.service.js +1 -41
- package/lib/objects.service.js.map +1 -1
- package/lib/summary/summaryActionHandler.d.ts +0 -5
- package/lib/summary/summaryActionHandler.js +0 -25
- package/lib/summary/summaryActionHandler.js.map +1 -1
- package/lib/summary/type.d.ts +0 -17
- package/lib/summary/type.js +0 -13
- package/lib/summary/type.js.map +1 -1
- package/package.json +5 -5
- package/src/master-detail/masterDetailActionHandler.ts +12 -10
- package/src/objects/fields/index.ts +9 -11
- package/tsconfig.json +1 -0
package/lib/actionsHandler.js
CHANGED
|
@@ -9,7 +9,7 @@ const objects_1 = require("./objects");
|
|
|
9
9
|
function cacherKey(objectApiName) {
|
|
10
10
|
return `$steedos.#${_1.METADATA_TYPE}.${objectApiName}`;
|
|
11
11
|
}
|
|
12
|
-
const DELAY_MESSAGE_OF_OBJECT_CHANGED = 10;
|
|
12
|
+
const DELAY_MESSAGE_OF_OBJECT_CHANGED = 10;
|
|
13
13
|
class ActionHandlers {
|
|
14
14
|
constructor(onRegister, onDestroy, onRegistered) {
|
|
15
15
|
this.onRegister = null;
|
|
@@ -26,13 +26,11 @@ class ActionHandlers {
|
|
|
26
26
|
objectApiName != objects_1.SQL_BASE_OBJECT && this.onRegister && _.isFunction(this.onRegister)) {
|
|
27
27
|
yield this.onRegister(data);
|
|
28
28
|
}
|
|
29
|
-
// await ctx.broker.call('metadata.add', {key: cacherKey(objectApiName), data: data}, {meta: meta});
|
|
30
29
|
yield metadata_registrar_1.Register.add(ctx.broker, { key: cacherKey(objectApiName), data: data }, meta);
|
|
31
30
|
if (objectApiName != objects_1.MONGO_BASE_OBJECT &&
|
|
32
31
|
objectApiName != objects_1.SQL_BASE_OBJECT && this.onRegistered && _.isFunction(this.onRegistered)) {
|
|
33
32
|
yield this.onRegistered(data);
|
|
34
33
|
}
|
|
35
|
-
// 为每个对象 setTimeout 延时执行
|
|
36
34
|
const registerObjectMemEntry = this.registerObjectMemEntry;
|
|
37
35
|
let timeoutId = registerObjectMemEntry.get(objectApiName);
|
|
38
36
|
if (timeoutId) {
|
|
@@ -55,7 +53,6 @@ class ActionHandlers {
|
|
|
55
53
|
getAll(ctx) {
|
|
56
54
|
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
57
55
|
const datasource = ctx.params.datasource;
|
|
58
|
-
// const objects = await ctx.broker.call('metadata.filter', {key: cacherKey("*")}, {meta: ctx.meta});
|
|
59
56
|
const objects = yield metadata_registrar_1.Register.filter(ctx.broker, cacherKey("*"));
|
|
60
57
|
if (datasource) {
|
|
61
58
|
return _.filter(objects, (object) => {
|
|
@@ -85,11 +82,6 @@ class ActionHandlers {
|
|
|
85
82
|
}
|
|
86
83
|
const metadataApiName = config.name;
|
|
87
84
|
if (!config.isMain) {
|
|
88
|
-
// const metadataConfig = await ctx.broker.call('metadata.getServiceMetadata', {
|
|
89
|
-
// serviceName: ctx.meta.metadataServiceName,
|
|
90
|
-
// metadataType: METADATA_TYPE,
|
|
91
|
-
// metadataApiName: metadataApiName,
|
|
92
|
-
// }, {meta: ctx.meta});
|
|
93
85
|
const metadataConfig = yield metadata_registrar_1.Register.getServiceMetadata(ctx.broker, {
|
|
94
86
|
serviceName: ctx.meta.metadataServiceName,
|
|
95
87
|
metadataType: _1.METADATA_TYPE,
|
|
@@ -100,7 +92,6 @@ class ActionHandlers {
|
|
|
100
92
|
config = _.defaultsDeep(config, metadataConfig.metadata);
|
|
101
93
|
}
|
|
102
94
|
}
|
|
103
|
-
// await ctx.broker.call('metadata.addServiceMetadata', { key: cacherKey(metadataApiName), data: config }, { meta: Object.assign({}, ctx.meta, { metadataType: METADATA_TYPE, metadataApiName: metadataApiName }) })
|
|
104
95
|
yield metadata_registrar_1.Register.addServiceMetadata(ctx.broker, { key: cacherKey(metadataApiName), data: config }, Object.assign({}, ctx.meta, { metadataType: _1.METADATA_TYPE, metadataApiName: metadataApiName }));
|
|
105
96
|
const objectConfig = yield (0, objects_1.refreshObject)(ctx, metadataApiName);
|
|
106
97
|
if (!objectConfig) {
|
|
@@ -109,11 +100,8 @@ class ActionHandlers {
|
|
|
109
100
|
const objectServiceName = (0, objects_1.getObjectServiceName)(metadataApiName);
|
|
110
101
|
const result = yield this.registerObject(ctx, metadataApiName, objectConfig, {
|
|
111
102
|
caller: {
|
|
112
|
-
// nodeID: broker.nodeID,
|
|
113
103
|
service: {
|
|
114
104
|
name: objectServiceName,
|
|
115
|
-
// version: broker.service.version, TODO
|
|
116
|
-
// fullName: broker.service.fullName, TODO
|
|
117
105
|
}
|
|
118
106
|
}
|
|
119
107
|
});
|
|
@@ -129,11 +117,6 @@ class ActionHandlers {
|
|
|
129
117
|
}
|
|
130
118
|
const metadataApiName = config.name;
|
|
131
119
|
if (!config.isMain) {
|
|
132
|
-
// const metadataConfig = await ctx.broker.call('metadata.getServiceMetadata', {
|
|
133
|
-
// serviceName: ctx.meta.metadataServiceName,
|
|
134
|
-
// metadataType: METADATA_TYPE,
|
|
135
|
-
// metadataApiName: metadataApiName,
|
|
136
|
-
// }, { meta: ctx.meta });
|
|
137
120
|
const metadataConfig = yield metadata_registrar_1.Register.getServiceMetadata(ctx.broker, {
|
|
138
121
|
serviceName: ctx.meta.metadataServiceName,
|
|
139
122
|
metadataType: _1.METADATA_TYPE,
|
|
@@ -144,7 +127,6 @@ class ActionHandlers {
|
|
|
144
127
|
config = _.defaultsDeep(config, metadataConfig.metadata);
|
|
145
128
|
}
|
|
146
129
|
}
|
|
147
|
-
// await ctx.broker.call('metadata.addServiceMetadata', { key: cacherKey(metadataApiName), data: config }, { meta: Object.assign({}, ctx.meta, { metadataType: METADATA_TYPE, metadataApiName: metadataApiName }) })
|
|
148
130
|
yield metadata_registrar_1.Register.addServiceMetadata(ctx.broker, {
|
|
149
131
|
key: cacherKey(metadataApiName),
|
|
150
132
|
data: config
|
|
@@ -157,11 +139,8 @@ class ActionHandlers {
|
|
|
157
139
|
const objectServiceName = (0, objects_1.getObjectServiceName)(metadataApiName);
|
|
158
140
|
yield this.registerObject(ctx, metadataApiName, objectConfig, {
|
|
159
141
|
caller: {
|
|
160
|
-
// nodeID: broker.nodeID,
|
|
161
142
|
service: {
|
|
162
143
|
name: objectServiceName,
|
|
163
|
-
// version: broker.service.version, TODO
|
|
164
|
-
// fullName: broker.service.fullName, TODO
|
|
165
144
|
}
|
|
166
145
|
}
|
|
167
146
|
});
|
|
@@ -173,10 +152,8 @@ class ActionHandlers {
|
|
|
173
152
|
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
174
153
|
const { data, oldData } = ctx.params;
|
|
175
154
|
if (oldData.name != data.name) {
|
|
176
|
-
// console.log(`change==================`, oldData.name, data.name);
|
|
177
155
|
yield this.deleteObject(ctx, oldData.name);
|
|
178
156
|
}
|
|
179
|
-
// await ctx.broker.call('metadata.add', {key: cacherKey(data.name), data: data}, {meta: ctx.meta})
|
|
180
157
|
yield metadata_registrar_1.Register.add(ctx.broker, { key: cacherKey(data.name), data: data }, ctx.meta);
|
|
181
158
|
ctx.broker.emit("metadata.objects.updated", { objectApiName: data.name, oldObjectApiName: oldData.name, isUpdate: true });
|
|
182
159
|
return true;
|
|
@@ -184,7 +161,6 @@ class ActionHandlers {
|
|
|
184
161
|
}
|
|
185
162
|
delete(ctx) {
|
|
186
163
|
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
187
|
-
// console.log(`delete==================`, ctx.params.objectApiName);
|
|
188
164
|
return yield this.deleteObject(ctx, ctx.params.objectApiName);
|
|
189
165
|
});
|
|
190
166
|
}
|
|
@@ -209,18 +185,14 @@ class ActionHandlers {
|
|
|
209
185
|
const metadataApiName = metadataApiNames_1_1.value;
|
|
210
186
|
const objectConfig = yield (0, objects_1.refreshObject)(ctx, metadataApiName);
|
|
211
187
|
if (!objectConfig) {
|
|
212
|
-
// console.log(`refresh deleteObject==================`, metadataApiName);
|
|
213
188
|
yield this.deleteObject(ctx, metadataApiName);
|
|
214
189
|
}
|
|
215
190
|
else {
|
|
216
191
|
const objectServiceName = (0, objects_1.getObjectServiceName)(metadataApiName);
|
|
217
192
|
yield this.registerObject(ctx, metadataApiName, objectConfig, {
|
|
218
193
|
caller: {
|
|
219
|
-
// nodeID: broker.nodeID,
|
|
220
194
|
service: {
|
|
221
195
|
name: objectServiceName,
|
|
222
|
-
// version: broker.service.version, TODO
|
|
223
|
-
// fullName: broker.service.fullName, TODO
|
|
224
196
|
}
|
|
225
197
|
}
|
|
226
198
|
});
|
|
@@ -245,17 +217,9 @@ class ActionHandlers {
|
|
|
245
217
|
}
|
|
246
218
|
handleDeleteObject(ctx, objectApiName) {
|
|
247
219
|
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
248
|
-
// const { metadata } = (await ctx.broker.call("metadata.get", { key: cacherKey(objectApiName) }, { meta: ctx.meta })) || {};
|
|
249
220
|
const { metadata } = (yield metadata_registrar_1.Register.get(ctx.broker, cacherKey(objectApiName))) || {};
|
|
250
|
-
// await ctx.broker.call('metadata.delete', {key: cacherKey(objectApiName)}, {meta: ctx.meta})
|
|
251
221
|
yield metadata_registrar_1.Register.delete(ctx.broker, cacherKey(objectApiName));
|
|
252
222
|
try {
|
|
253
|
-
// await ctx.broker.call('metadata.deleteServiceMetadata', {
|
|
254
|
-
// nodeID: ctx.broker.nodeID,
|
|
255
|
-
// serviceName: '~database-objects',
|
|
256
|
-
// metadataType: METADATA_TYPE,
|
|
257
|
-
// metadataApiName: objectApiName
|
|
258
|
-
// }, {meta: ctx.meta})
|
|
259
223
|
yield metadata_registrar_1.Register.deleteServiceMetadata(ctx.broker, {
|
|
260
224
|
nodeID: ctx.broker.nodeID,
|
|
261
225
|
serviceName: '~database-objects',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"actionsHandler.js","sourceRoot":"","sources":["../src/actionsHandler.ts"],"names":[],"mappings":";;;;AAAA,4BAA6B;AAC7B,oEAAuD;AACvD,wBAAkC;AAClC,uCAAuH;AAgBvH,SAAS,SAAS,CAAC,aAAqB;IACpC,OAAO,aAAa,gBAAa,IAAI,aAAa,EAAE,CAAA;AACxD,CAAC;AAED,MAAM,+BAA+B,GAAI,EAAE,CAAC
|
|
1
|
+
{"version":3,"file":"actionsHandler.js","sourceRoot":"","sources":["../src/actionsHandler.ts"],"names":[],"mappings":"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"}
|
package/lib/formula/core.d.ts
CHANGED
|
@@ -1,13 +1,2 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* 根据公式内容,取出其中{}中的变量
|
|
3
|
-
* @param formula
|
|
4
|
-
*/
|
|
5
1
|
export declare const pickFormulaVars: (formula: string) => Array<string>;
|
|
6
|
-
/**
|
|
7
|
-
* 某个对象上的公式字段是否引用了某个对象和字段
|
|
8
|
-
* @param formulaObjectName 公式字段在所在对象名称
|
|
9
|
-
* @param formulaFieldName 公式字段名称
|
|
10
|
-
* @param object_name 是否引用了该对象
|
|
11
|
-
* @param field_name 是否引用了该字段
|
|
12
|
-
*/
|
|
13
2
|
export declare const isFormulaFieldQuotingObjectAndFields: (formulaObjectName: string, formulaFieldName: string, objectName: string, fieldNames?: Array<string>) => Promise<boolean>;
|
package/lib/formula/core.js
CHANGED
|
@@ -5,28 +5,16 @@ const tslib_1 = require("tslib");
|
|
|
5
5
|
const formula_1 = require("@steedos/formula");
|
|
6
6
|
const field_formula_1 = require("./field_formula");
|
|
7
7
|
const util_1 = require("./util");
|
|
8
|
-
/**
|
|
9
|
-
* 根据公式内容,取出其中{}中的变量
|
|
10
|
-
* @param formula
|
|
11
|
-
*/
|
|
12
8
|
const pickFormulaVars = (formula) => {
|
|
13
9
|
return (0, formula_1.extract)(formula);
|
|
14
10
|
};
|
|
15
11
|
exports.pickFormulaVars = pickFormulaVars;
|
|
16
|
-
/**
|
|
17
|
-
* 某个对象上的公式字段是否引用了某个对象和字段
|
|
18
|
-
* @param formulaObjectName 公式字段在所在对象名称
|
|
19
|
-
* @param formulaFieldName 公式字段名称
|
|
20
|
-
* @param object_name 是否引用了该对象
|
|
21
|
-
* @param field_name 是否引用了该字段
|
|
22
|
-
*/
|
|
23
12
|
const isFormulaFieldQuotingObjectAndFields = (formulaObjectName, formulaFieldName, objectName, fieldNames) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
|
|
24
13
|
const configs = yield (0, field_formula_1.getObjectFieldFormulaConfigs)(formulaObjectName, formulaFieldName);
|
|
25
14
|
if (configs && configs.length) {
|
|
26
15
|
return (0, util_1.isFieldFormulaConfigQuotingObjectAndFields)(configs[0], objectName, fieldNames);
|
|
27
16
|
}
|
|
28
17
|
else {
|
|
29
|
-
// 没找到公式字段配置说明传入的参数不是公式字段
|
|
30
18
|
return false;
|
|
31
19
|
}
|
|
32
20
|
});
|
package/lib/formula/core.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"core.js","sourceRoot":"","sources":["../../src/formula/core.ts"],"names":[],"mappings":";;;;AACA,8CAA2C;AAC3C,mDAA+D;AAC/D,iCAAoE;
|
|
1
|
+
{"version":3,"file":"core.js","sourceRoot":"","sources":["../../src/formula/core.ts"],"names":[],"mappings":";;;;AACA,8CAA2C;AAC3C,mDAA+D;AAC/D,iCAAoE;AAM7D,MAAM,eAAe,GAAG,CAAC,OAAe,EAAiB,EAAE;IAC9D,OAAO,IAAA,iBAAO,EAAC,OAAO,CAAC,CAAC;AAC5B,CAAC,CAAA;AAFY,QAAA,eAAe,mBAE3B;AAUM,MAAM,oCAAoC,GAAG,CAAO,iBAAyB,EAAE,gBAAwB,EAAE,UAAkB,EAAE,UAA0B,EAAoB,EAAE;IAChL,MAAM,OAAO,GAAyC,MAAM,IAAA,4CAA4B,EAAC,iBAAiB,EAAE,gBAAgB,CAAC,CAAC;IAC9H,IAAI,OAAO,IAAI,OAAO,CAAC,MAAM,EAAE;QAC3B,OAAO,IAAA,iDAA0C,EAAC,OAAO,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;KACzF;SACI;QAED,OAAO,KAAK,CAAC;KAChB;AACL,CAAC,CAAA,CAAA;AATY,QAAA,oCAAoC,wCAShD"}
|
|
@@ -2,29 +2,6 @@ import { SteedosFieldFormulaTypeConfig, SteedosQuotedByFieldFormulasTypeConfig }
|
|
|
2
2
|
import { JsonMap } from '@salesforce/ts-types';
|
|
3
3
|
export declare const getFieldFormulaConfigs: () => Array<SteedosFieldFormulaTypeConfig>;
|
|
4
4
|
export declare const getFieldFormulaConfig: (_id: string) => SteedosFieldFormulaTypeConfig;
|
|
5
|
-
/**
|
|
6
|
-
* 获取对象本身的字段公式配置
|
|
7
|
-
* 不传入fieldName时取objectName关联的所有字段公式配置
|
|
8
|
-
* @param objectName
|
|
9
|
-
* @param fieldName
|
|
10
|
-
*/
|
|
11
5
|
export declare const getObjectFieldFormulaConfigs: (objectName: string, fieldName?: string) => Array<SteedosFieldFormulaTypeConfig>;
|
|
12
|
-
/**
|
|
13
|
-
* 获取对象在哪些字段公式中被引用
|
|
14
|
-
* 不传入fieldNames时取objectName关联的所有字段公式配置
|
|
15
|
-
* @param objectName
|
|
16
|
-
* @param fieldNames
|
|
17
|
-
* @param escapeConfigs 要跳过的字段公式
|
|
18
|
-
* @param options.onlyForOwn 要跳过其他对象上的字段公式,只检测当前对象上的字段公式,
|
|
19
|
-
* 新建记录的时候传入true可以提高性能,避免不必要的公式计算
|
|
20
|
-
* 见issue: a公式字段,其中应用了b公式字段,记录保存后a字段没计算,编辑后再保存字段计算 #2946
|
|
21
|
-
* @param options.withoutCurrent 要跳过当前对象上配置的所有字段公式,只检测其他对象上的字段公式,
|
|
22
|
-
* 删除记录的时候传入true可以解决因为记录被删除doc为null运行公式报错的问题,同时避免不必要的公式计算
|
|
23
|
-
* 见issue: 删除包含公式字段的记录时报错 #3427
|
|
24
|
-
*/
|
|
25
6
|
export declare const getObjectQuotedByFieldFormulaConfigs: (objectName: string, fieldNames?: Array<string>, escapeConfigs?: Array<SteedosFieldFormulaTypeConfig> | Array<string>, options?: JsonMap) => SteedosQuotedByFieldFormulasTypeConfig;
|
|
26
|
-
/**
|
|
27
|
-
* 获取参数config在哪些字段公式中被引用
|
|
28
|
-
* @param config
|
|
29
|
-
*/
|
|
30
7
|
export declare const getQuotedByFieldFormulaConfigs: (config: SteedosFieldFormulaTypeConfig) => SteedosQuotedByFieldFormulasTypeConfig;
|
|
@@ -3,28 +3,14 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.getQuotedByFieldFormulaConfigs = exports.getObjectQuotedByFieldFormulaConfigs = exports.getObjectFieldFormulaConfigs = exports.getFieldFormulaConfig = exports.getFieldFormulaConfigs = void 0;
|
|
4
4
|
const util_1 = require("./util");
|
|
5
5
|
const _ = require("lodash");
|
|
6
|
-
// export const addFieldFormulaConfig = (config: SteedosFieldFormulaTypeConfig) => {
|
|
7
|
-
// addConfig('field_formula', config);
|
|
8
|
-
// }
|
|
9
|
-
// export const clearFieldFormulaConfigs = (query?: object) => {
|
|
10
|
-
// removeManyConfigs('field_formula', query);
|
|
11
|
-
// }
|
|
12
6
|
const getFieldFormulaConfigs = () => {
|
|
13
7
|
return [];
|
|
14
|
-
// return getConfigs('field_formula');
|
|
15
8
|
};
|
|
16
9
|
exports.getFieldFormulaConfigs = getFieldFormulaConfigs;
|
|
17
10
|
const getFieldFormulaConfig = (_id) => {
|
|
18
11
|
return null;
|
|
19
|
-
// return getConfig('field_formula', _id);
|
|
20
12
|
};
|
|
21
13
|
exports.getFieldFormulaConfig = getFieldFormulaConfig;
|
|
22
|
-
/**
|
|
23
|
-
* 获取对象本身的字段公式配置
|
|
24
|
-
* 不传入fieldName时取objectName关联的所有字段公式配置
|
|
25
|
-
* @param objectName
|
|
26
|
-
* @param fieldName
|
|
27
|
-
*/
|
|
28
14
|
const getObjectFieldFormulaConfigs = (objectName, fieldName) => {
|
|
29
15
|
const configs = (0, exports.getFieldFormulaConfigs)();
|
|
30
16
|
let result = configs.filter((config) => {
|
|
@@ -38,19 +24,6 @@ const getObjectFieldFormulaConfigs = (objectName, fieldName) => {
|
|
|
38
24
|
return (0, util_1.sortFieldFormulaConfigs)(result);
|
|
39
25
|
};
|
|
40
26
|
exports.getObjectFieldFormulaConfigs = getObjectFieldFormulaConfigs;
|
|
41
|
-
/**
|
|
42
|
-
* 获取对象在哪些字段公式中被引用
|
|
43
|
-
* 不传入fieldNames时取objectName关联的所有字段公式配置
|
|
44
|
-
* @param objectName
|
|
45
|
-
* @param fieldNames
|
|
46
|
-
* @param escapeConfigs 要跳过的字段公式
|
|
47
|
-
* @param options.onlyForOwn 要跳过其他对象上的字段公式,只检测当前对象上的字段公式,
|
|
48
|
-
* 新建记录的时候传入true可以提高性能,避免不必要的公式计算
|
|
49
|
-
* 见issue: a公式字段,其中应用了b公式字段,记录保存后a字段没计算,编辑后再保存字段计算 #2946
|
|
50
|
-
* @param options.withoutCurrent 要跳过当前对象上配置的所有字段公式,只检测其他对象上的字段公式,
|
|
51
|
-
* 删除记录的时候传入true可以解决因为记录被删除doc为null运行公式报错的问题,同时避免不必要的公式计算
|
|
52
|
-
* 见issue: 删除包含公式字段的记录时报错 #3427
|
|
53
|
-
*/
|
|
54
27
|
const getObjectQuotedByFieldFormulaConfigs = (objectName, fieldNames, escapeConfigs, options) => {
|
|
55
28
|
const { onlyForOwn, withoutCurrent } = options || {};
|
|
56
29
|
const configs = (0, exports.getFieldFormulaConfigs)();
|
|
@@ -68,7 +41,6 @@ const getObjectQuotedByFieldFormulaConfigs = (objectName, fieldNames, escapeConf
|
|
|
68
41
|
let isCurrent = config.object_name === objectName;
|
|
69
42
|
let isOwn = isCurrent;
|
|
70
43
|
if (isCurrent) {
|
|
71
|
-
// 要进一步确定其引用关系中有引用自身才算是引用自身的公式字段
|
|
72
44
|
isOwn = !!config.quotes.find((quote) => {
|
|
73
45
|
return quote.is_own;
|
|
74
46
|
});
|
|
@@ -85,17 +57,12 @@ const getObjectQuotedByFieldFormulaConfigs = (objectName, fieldNames, escapeConf
|
|
|
85
57
|
}
|
|
86
58
|
}
|
|
87
59
|
});
|
|
88
|
-
// 当前对象上的字段一定要做排序
|
|
89
60
|
const ownConfigs = (0, util_1.sortFieldFormulaConfigs)(configsOnCurrentObject);
|
|
90
|
-
const otherConfigs = configsOnOtherObjects;
|
|
61
|
+
const otherConfigs = configsOnOtherObjects;
|
|
91
62
|
const allConfigs = ownConfigs.concat(otherConfigs);
|
|
92
63
|
return { ownConfigs, otherConfigs, allConfigs };
|
|
93
64
|
};
|
|
94
65
|
exports.getObjectQuotedByFieldFormulaConfigs = getObjectQuotedByFieldFormulaConfigs;
|
|
95
|
-
/**
|
|
96
|
-
* 获取参数config在哪些字段公式中被引用
|
|
97
|
-
* @param config
|
|
98
|
-
*/
|
|
99
66
|
const getQuotedByFieldFormulaConfigs = (config) => {
|
|
100
67
|
return (0, exports.getObjectQuotedByFieldFormulaConfigs)(config.object_name, [config.field_name]);
|
|
101
68
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"field_formula.js","sourceRoot":"","sources":["../../src/formula/field_formula.ts"],"names":[],"mappings":";;;AAEA,iCAA6F;AAC7F,4BAA6B;
|
|
1
|
+
{"version":3,"file":"field_formula.js","sourceRoot":"","sources":["../../src/formula/field_formula.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,20 +5,7 @@ export declare class FormulaActionHandler {
|
|
|
5
5
|
deleteAll(objectConfig: any): Promise<boolean>;
|
|
6
6
|
getObjectConfig(objectApiName: string): Promise<any>;
|
|
7
7
|
addFieldFormulaQuotesConfig(quote: SteedosFieldFormulaQuoteTypeConfig, quotes: Array<SteedosFieldFormulaQuoteTypeConfig>): void;
|
|
8
|
-
/**
|
|
9
|
-
* 把公式中a.b.c,比如account.website这样的变量转为SteedosFieldFormulaQuoteTypeConfig和SteedosFieldFormulaVarTypeConfig追加到quotes和vars中
|
|
10
|
-
* 因为getObjectConfigs拿到的对象肯定不包括被禁用和假删除的对象,所以不需要额外判断相关状态
|
|
11
|
-
* @param formulaVar 公式中的单个变量,比如account.website
|
|
12
|
-
* @param fieldConfig
|
|
13
|
-
* @param objectConfigs
|
|
14
|
-
* @param quotes
|
|
15
|
-
*/
|
|
16
8
|
computeFormulaVarAndQuotes(formulaVar: string, objectConfig: any, quotes: Array<SteedosFieldFormulaQuoteTypeConfig>, vars: Array<SteedosFormulaVarTypeConfig>): Promise<void>;
|
|
17
|
-
/**
|
|
18
|
-
* 根据公式内容,取出其中{}中的变量,返回计算后的公式引用集合
|
|
19
|
-
* @param formula
|
|
20
|
-
* @param fieldConfig
|
|
21
|
-
*/
|
|
22
9
|
computeFormulaVarsAndQuotes(formula: string, objectConfig: any): Promise<{
|
|
23
10
|
quotes: SteedosFieldFormulaQuoteTypeConfig[];
|
|
24
11
|
vars: SteedosFormulaVarTypeConfig[];
|
|
@@ -4,11 +4,9 @@ exports.FormulaActionHandler = void 0;
|
|
|
4
4
|
const tslib_1 = require("tslib");
|
|
5
5
|
const type_1 = require("./type");
|
|
6
6
|
const core_1 = require("./core");
|
|
7
|
-
// import { isCodeObject } from '../util'; TODO
|
|
8
7
|
const metadata_registrar_1 = require("@steedos/metadata-registrar");
|
|
9
8
|
const _ = require("lodash");
|
|
10
9
|
const clone = require('clone');
|
|
11
|
-
// TODO
|
|
12
10
|
const isCodeObject = (objectApiName) => {
|
|
13
11
|
return objectApiName ? false : true;
|
|
14
12
|
};
|
|
@@ -27,8 +25,6 @@ class FormulaActionHandler {
|
|
|
27
25
|
if (!objectConfig) {
|
|
28
26
|
return;
|
|
29
27
|
}
|
|
30
|
-
// console.log(`deleteAll formula`, `${this.cacherKey(objectConfig.name)}.*`)
|
|
31
|
-
// await this.broker.call('metadata.fuzzyDelete', {key: `${this.cacherKey(objectConfig.name)}.*`}, {meta: {}})
|
|
32
28
|
yield metadata_registrar_1.Register.fuzzyDelete(this.broker, `${this.cacherKey(objectConfig.name)}.*`);
|
|
33
29
|
return true;
|
|
34
30
|
}
|
|
@@ -46,7 +42,6 @@ class FormulaActionHandler {
|
|
|
46
42
|
}
|
|
47
43
|
addFieldFormulaQuotesConfig(quote, quotes) {
|
|
48
44
|
if (quote.field_name === "_id") {
|
|
49
|
-
// _id字段不记为引用关系,因为其值不会变化,相关记录属性变更时不需要重算被引用的字段公式
|
|
50
45
|
return;
|
|
51
46
|
}
|
|
52
47
|
let existQuote = quotes.find((item) => {
|
|
@@ -56,19 +51,10 @@ class FormulaActionHandler {
|
|
|
56
51
|
quotes.push(quote);
|
|
57
52
|
}
|
|
58
53
|
}
|
|
59
|
-
/**
|
|
60
|
-
* 把公式中a.b.c,比如account.website这样的变量转为SteedosFieldFormulaQuoteTypeConfig和SteedosFieldFormulaVarTypeConfig追加到quotes和vars中
|
|
61
|
-
* 因为getObjectConfigs拿到的对象肯定不包括被禁用和假删除的对象,所以不需要额外判断相关状态
|
|
62
|
-
* @param formulaVar 公式中的单个变量,比如account.website
|
|
63
|
-
* @param fieldConfig
|
|
64
|
-
* @param objectConfigs
|
|
65
|
-
* @param quotes
|
|
66
|
-
*/
|
|
67
54
|
computeFormulaVarAndQuotes(formulaVar, objectConfig, quotes, vars) {
|
|
68
55
|
var e_1, _a;
|
|
69
56
|
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
70
|
-
let isSimpleVar = objectConfig === null;
|
|
71
|
-
// 公式变量以FormulaUserSessionKey(即$user)值开头,说明是userSession变量
|
|
57
|
+
let isSimpleVar = objectConfig === null;
|
|
72
58
|
let isUserVar = new RegExp(`^${type_1.FormulaUserKey.replace("$", "\\$")}\\b`).test(formulaVar);
|
|
73
59
|
let varItems = formulaVar.split(".");
|
|
74
60
|
let paths = [];
|
|
@@ -77,30 +63,22 @@ class FormulaActionHandler {
|
|
|
77
63
|
paths: paths
|
|
78
64
|
};
|
|
79
65
|
if (isUserVar) {
|
|
80
|
-
// user var不可以按普通变量处理,因为其变量值依赖paths属性
|
|
81
66
|
isSimpleVar = false;
|
|
82
67
|
objectConfig = "space_users";
|
|
83
68
|
}
|
|
84
69
|
if (isSimpleVar) {
|
|
85
|
-
// 只要不是user var则标记为普通变量,后续取参数值时直接通过key取值,而不用走变量上的paths属性。
|
|
86
|
-
// 普通变量直接跳后后面所有代码即可,因为不需要处理paths和公式关系链等逻辑。
|
|
87
|
-
// 注意普通公式也是支持$user全局变量的,但是isSimpleVar是false,所以下面所有逻辑
|
|
88
70
|
formulaVarItem.is_simple_var = true;
|
|
89
71
|
vars.push(formulaVarItem);
|
|
90
72
|
return;
|
|
91
73
|
}
|
|
92
74
|
if (isUserVar) {
|
|
93
|
-
// 如果是userSession变量,则不需要计算quotes引用,但是其paths值需要正常记录下来
|
|
94
75
|
formulaVarItem.is_user_var = true;
|
|
95
|
-
// vars.push(formulaVarItem);
|
|
96
|
-
// return;
|
|
97
76
|
}
|
|
98
77
|
else {
|
|
99
78
|
if (formulaVar.startsWith("$")) {
|
|
100
79
|
throw new Error(`computeFormulaVarAndQuotes:The formula var '${formulaVar}' is starts with '$' but not a user session var that starts with $user.`);
|
|
101
80
|
}
|
|
102
81
|
if (!objectConfig) {
|
|
103
|
-
// 不是$user变量时,需要传入objectConfig参数
|
|
104
82
|
throw new Error(`computeFormulaVarAndQuotes:The 'objectConfig' is required for the formula var '${formulaVar}'`);
|
|
105
83
|
}
|
|
106
84
|
}
|
|
@@ -110,19 +88,15 @@ class FormulaActionHandler {
|
|
|
110
88
|
for (var varItems_1 = tslib_1.__asyncValues(varItems), varItems_1_1; varItems_1_1 = yield varItems_1.next(), !varItems_1_1.done;) {
|
|
111
89
|
let varItem = varItems_1_1.value;
|
|
112
90
|
i++;
|
|
113
|
-
// let i:number = _index as unknown as number;
|
|
114
|
-
// let varItem = varItems[i];
|
|
115
91
|
let tempFieldConfig;
|
|
116
92
|
const isUserKey = varItem === type_1.FormulaUserKey;
|
|
117
93
|
if (varItem === "_id") {
|
|
118
|
-
// 支持_id属性
|
|
119
94
|
tempFieldConfig = {
|
|
120
95
|
name: varItem,
|
|
121
96
|
type: "text"
|
|
122
97
|
};
|
|
123
98
|
}
|
|
124
99
|
else if (isUserKey) {
|
|
125
|
-
// 如果是$user变量,则特殊处理下
|
|
126
100
|
tempFieldConfig = {
|
|
127
101
|
name: varItem,
|
|
128
102
|
type: "lookup",
|
|
@@ -133,8 +107,6 @@ class FormulaActionHandler {
|
|
|
133
107
|
tempFieldConfig = tempObjectConfig.fields[varItem];
|
|
134
108
|
}
|
|
135
109
|
if (!tempFieldConfig) {
|
|
136
|
-
// 不是对象上的字段,则直接退出,这里注意公式中引用零代码中的字段的话,公式中字段名需要手动加上__c后缀(因为用户填写的api名称不带__c,是内核会自动加后缀),否则会找不到
|
|
137
|
-
// throw new Error(`computeFormulaVarAndQuotes:Can't find the field '${varItem}' on the object '${tempObjectConfig.name}' for the formula var '${formulaVar}'`);
|
|
138
110
|
return;
|
|
139
111
|
}
|
|
140
112
|
let isFormulaType = tempFieldConfig.type === "formula";
|
|
@@ -146,18 +118,14 @@ class FormulaActionHandler {
|
|
|
146
118
|
if (isFormulaType) {
|
|
147
119
|
tempFieldFormulaVarPath.is_formula = true;
|
|
148
120
|
}
|
|
149
|
-
// 当是$user时,不需要把第一个path记录下来,只需要记录其后续的路径即可
|
|
150
121
|
paths.push(tempFieldFormulaVarPath);
|
|
151
122
|
}
|
|
152
123
|
if (!isUserVar) {
|
|
153
|
-
// $user变量不需要记录引用关系,因为没法确定每条record当时对应的当前用户ID是多少
|
|
154
|
-
// 自己可以引用自己,i大于0就是其他对象上的引用
|
|
155
124
|
let tempFieldFormulaQuote = {
|
|
156
125
|
object_name: tempObjectConfig.name,
|
|
157
126
|
field_name: tempFieldConfig.name
|
|
158
127
|
};
|
|
159
128
|
if (i === 0 && i === varItems.length - 1) {
|
|
160
|
-
// 是引用的本对象上自身的字段,即自己引用自己
|
|
161
129
|
tempFieldFormulaQuote.is_own = true;
|
|
162
130
|
}
|
|
163
131
|
if (isFormulaType) {
|
|
@@ -166,13 +134,10 @@ class FormulaActionHandler {
|
|
|
166
134
|
this.addFieldFormulaQuotesConfig(tempFieldFormulaQuote, quotes);
|
|
167
135
|
}
|
|
168
136
|
if (tempFieldConfig.type === "lookup" || tempFieldConfig.type === "master_detail") {
|
|
169
|
-
// 引用类型字段
|
|
170
137
|
if (tempFieldConfig.multiple) {
|
|
171
|
-
// TODO:暂时不支持数组的解析,见:公式字段中要实现lookup关联到数组字段的情况 #783
|
|
172
138
|
throw new Error(`computeFormulaVarAndQuotes:The field '${tempFieldConfig.name}' for the formula var '${formulaVar}' is a multiple ${tempFieldConfig.type} type, it is not supported yet.`);
|
|
173
139
|
}
|
|
174
140
|
if (i === varItems.length - 1) {
|
|
175
|
-
// 引用类型字段后面必须继续引用该字段的相关属性,否则直接报错
|
|
176
141
|
throw new Error(`computeFormulaVarAndQuotes:The field '${tempFieldConfig.name}' for the formula var '${formulaVar}' is a ${tempFieldConfig.type} type, so you must add more property after it.`);
|
|
177
142
|
}
|
|
178
143
|
if (tempFieldConfig.reference_to_field && paths.length) {
|
|
@@ -180,26 +145,20 @@ class FormulaActionHandler {
|
|
|
180
145
|
}
|
|
181
146
|
}
|
|
182
147
|
else {
|
|
183
|
-
// 不是引用类型字段,则直接退出
|
|
184
148
|
if (i < varItems.length - 1) {
|
|
185
|
-
// 提前找到非跨对象字段,说明varItems中后面没计算的变量是多余错误的,因为.后面肯定是跨对象引用出来的字段(除非是$user等全局变量)
|
|
186
149
|
throw new Error(`computeFormulaVarAndQuotes:The field '${tempFieldConfig.name}' for the formula var '${formulaVar}' is not a lookup/master_detail type, so you can't get more property for it.`);
|
|
187
150
|
}
|
|
188
151
|
break;
|
|
189
152
|
}
|
|
190
153
|
if (typeof tempFieldConfig.reference_to !== "string") {
|
|
191
|
-
// 暂时只支持reference_to为字符的情况,其他类型直接跳过
|
|
192
154
|
throw new Error(`Field ${tempFieldConfig.name} in formula ${formulaVar} does not define the "Reference Object" property or its "Reference Object" property is a function.`);
|
|
193
155
|
}
|
|
194
156
|
tempObjectConfig = yield this.getObjectConfig(tempFieldConfig.reference_to);
|
|
195
157
|
if (!tempObjectConfig) {
|
|
196
|
-
// 没找到相关引用对象,直接退出
|
|
197
|
-
// 如果不是零代码对象,直接报错,否则直接返回,待相关零代码对象加载进来时,会再进入该函数
|
|
198
158
|
if (isCodeObject(tempFieldConfig.reference_to)) {
|
|
199
159
|
throw new Error(`computeFormulaVarAndQuotes:Can't find the object reference_to '${tempFieldConfig.reference_to}' by the field '${tempFieldConfig.name}' for the formula var '${formulaVar}'`);
|
|
200
160
|
}
|
|
201
161
|
else {
|
|
202
|
-
// await this.broker.call('metadata.add', {key: this.cacherKey(getDynamicCalcMapCacherKey(tempFieldConfig.reference_to, objectConfig.name)), data: {objectApiName: objectConfig.name}}, {meta: {}})
|
|
203
162
|
yield metadata_registrar_1.Register.add(this.broker, { key: this.cacherKey(getDynamicCalcMapCacherKey(tempFieldConfig.reference_to, objectConfig.name)), data: { objectApiName: objectConfig.name } }, {});
|
|
204
163
|
return;
|
|
205
164
|
}
|
|
@@ -216,11 +175,6 @@ class FormulaActionHandler {
|
|
|
216
175
|
vars.push(formulaVarItem);
|
|
217
176
|
});
|
|
218
177
|
}
|
|
219
|
-
/**
|
|
220
|
-
* 根据公式内容,取出其中{}中的变量,返回计算后的公式引用集合
|
|
221
|
-
* @param formula
|
|
222
|
-
* @param fieldConfig
|
|
223
|
-
*/
|
|
224
178
|
computeFormulaVarsAndQuotes(formula, objectConfig) {
|
|
225
179
|
var e_2, _a;
|
|
226
180
|
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
@@ -276,14 +230,11 @@ class FormulaActionHandler {
|
|
|
276
230
|
try {
|
|
277
231
|
for (var _b = tslib_1.__asyncValues(_.values(config.fields)), _c; _c = yield _b.next(), !_c.done;) {
|
|
278
232
|
const field = _c.value;
|
|
279
|
-
// console.log('key', key);
|
|
280
|
-
// const field = config.fields[key]
|
|
281
233
|
if (field.type === "formula") {
|
|
282
234
|
if (datasource !== "meteor" && datasource !== "default") {
|
|
283
235
|
throw new Error(`The type of the field '${field.name}' on the object '${config.name}' can't be 'formula', because it is not in the default datasource.`);
|
|
284
236
|
}
|
|
285
237
|
try {
|
|
286
|
-
// 这里一定要加try catch,否则某个字段报错后,后续其他字段及其他对象就再也没有正常加载了
|
|
287
238
|
const fieldFormulaConfig = yield this.getObjectFieldFormulaConfig(clone(field), config);
|
|
288
239
|
objectFieldsFormulaConfig.push(fieldFormulaConfig);
|
|
289
240
|
}
|
|
@@ -322,7 +273,6 @@ class FormulaActionHandler {
|
|
|
322
273
|
var e_4, _a;
|
|
323
274
|
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
324
275
|
const maps = [];
|
|
325
|
-
// let records = (await broker.call('metadata.filter', { key: this.cacherKey(`${refMapName}.*`) }, { meta: {} })) || {};
|
|
326
276
|
let records = (yield metadata_registrar_1.Register.filter(this.broker, this.cacherKey(`${refMapName}.*`))) || {};
|
|
327
277
|
try {
|
|
328
278
|
for (var records_1 = tslib_1.__asyncValues(records), records_1_1; records_1_1 = yield records_1.next(), !records_1_1.done;) {
|
|
@@ -354,11 +304,8 @@ class FormulaActionHandler {
|
|
|
354
304
|
key: key,
|
|
355
305
|
value: value
|
|
356
306
|
};
|
|
357
|
-
// //checkData
|
|
358
307
|
this.checkRefMapData(maps, data);
|
|
359
|
-
// maps.push(data);
|
|
360
308
|
yield metadata_registrar_1.Register.add(this.broker, { key: this.cacherKey(`${refMapName}.${key}.${value}`), data: data }, {});
|
|
361
|
-
// await broker.call('metadata.add', {key: this.cacherKey(`${refMapName}.${key}.${value}`), data: data}, {meta: {}})
|
|
362
309
|
});
|
|
363
310
|
}
|
|
364
311
|
addFormulaMetadata(config, datasource) {
|
|
@@ -397,7 +344,6 @@ class FormulaActionHandler {
|
|
|
397
344
|
getObjectDynamicCalcFormulaMap(objectApiName) {
|
|
398
345
|
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
399
346
|
return yield metadata_registrar_1.Register.filter(this.broker, this.cacherKey(getDynamicCalcMapCacherKey(objectApiName, '*')));
|
|
400
|
-
// return await this.broker.call('metadata.filter', {key: this.cacherKey(getDynamicCalcMapCacherKey(objectApiName, '*'))}, {meta: {}});
|
|
401
347
|
});
|
|
402
348
|
}
|
|
403
349
|
recalcObjectsFormulaMap(objectConfig) {
|
|
@@ -430,7 +376,6 @@ class FormulaActionHandler {
|
|
|
430
376
|
const recalcObjectConfig = recalcObjects[objectName];
|
|
431
377
|
yield this.addFormulaMetadata(recalcObjectConfig, recalcObjectConfig.datasource);
|
|
432
378
|
yield metadata_registrar_1.Register.delete(this.broker, this.cacherKey(getDynamicCalcMapCacherKey(objectConfig.name, objectName)));
|
|
433
|
-
// await this.broker.call('metadata.delete', {key: this.cacherKey(getDynamicCalcMapCacherKey(objectConfig.name, objectName))}, {meta: {}})
|
|
434
379
|
}
|
|
435
380
|
}
|
|
436
381
|
});
|
|
@@ -458,7 +403,6 @@ class FormulaActionHandler {
|
|
|
458
403
|
}
|
|
459
404
|
const key = this.cacherKey(`${objectApiName}.${fieldApiName}`);
|
|
460
405
|
const configs = [];
|
|
461
|
-
// const res = await this.broker.call('metadata.filter', {key: key}, {meta: {}})
|
|
462
406
|
const res = yield metadata_registrar_1.Register.filter(this.broker, key);
|
|
463
407
|
_.forEach(res, (item) => {
|
|
464
408
|
configs.push(item === null || item === void 0 ? void 0 : item.metadata);
|
|
@@ -470,7 +414,6 @@ class FormulaActionHandler {
|
|
|
470
414
|
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
471
415
|
let { fieldApiFullName } = ctx.params;
|
|
472
416
|
const key = this.cacherKey(fieldApiFullName);
|
|
473
|
-
// const res = await this.broker.call('metadata.get', {key: key}, {meta: {}});
|
|
474
417
|
const res = yield metadata_registrar_1.Register.get(this.broker, key);
|
|
475
418
|
return res === null || res === void 0 ? void 0 : res.metadata;
|
|
476
419
|
});
|