@steedos/objectql 2.2.50 → 2.2.51-beta.4
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/services/helpers/graphql/consts.d.ts +17 -0
- package/lib/services/helpers/graphql/consts.js +28 -0
- package/lib/services/helpers/graphql/consts.js.map +1 -0
- package/lib/services/helpers/graphql/getQueryFields.js +17 -2
- package/lib/services/helpers/graphql/getQueryFields.js.map +1 -1
- package/lib/services/helpers/graphql/index.d.ts +1 -1
- package/lib/services/helpers/graphql/index.js +31 -46
- package/lib/services/helpers/graphql/index.js.map +1 -1
- package/lib/util/index.js +7 -0
- package/lib/util/index.js.map +1 -1
- package/package.json +11 -12
- package/src/actions/field_updates.ts +0 -118
- package/src/actions/index.ts +0 -3
- package/src/actions/types/field_update_target.ts +0 -7
- package/src/actions/types/workflow_notification.ts +0 -9
- package/src/actions/types/workflow_rule.ts +0 -11
- package/src/actions/workflow_notifications.ts +0 -81
- package/src/actions/workflow_rule.ts +0 -136
- package/src/driver/driver.ts +0 -102
- package/src/driver/field-encrytion/index.ts +0 -8
- package/src/driver/field-encrytion/sharedconst.ts +0 -34
- package/src/driver/fieldDBType.ts +0 -14
- package/src/driver/format.ts +0 -36
- package/src/driver/index.ts +0 -20
- package/src/driver/metadata.ts +0 -226
- package/src/driver/meteorMongo.ts +0 -639
- package/src/driver/mongo.ts +0 -416
- package/src/driver/mysql.ts +0 -47
- package/src/driver/oracle.ts +0 -60
- package/src/driver/postgres.ts +0 -46
- package/src/driver/sqlite3.ts +0 -40
- package/src/driver/sqlserver.ts +0 -52
- package/src/dynamic-load/actions.ts +0 -146
- package/src/dynamic-load/approval_process.ts +0 -73
- package/src/dynamic-load/button.ts +0 -75
- package/src/dynamic-load/chart.ts +0 -22
- package/src/dynamic-load/client_script.ts +0 -65
- package/src/dynamic-load/field.ts +0 -77
- package/src/dynamic-load/flow_role.ts +0 -46
- package/src/dynamic-load/index.ts +0 -21
- package/src/dynamic-load/layout.ts +0 -53
- package/src/dynamic-load/listview.ts +0 -57
- package/src/dynamic-load/method.ts +0 -63
- package/src/dynamic-load/object_translations.ts +0 -61
- package/src/dynamic-load/originalObject.ts +0 -8
- package/src/dynamic-load/package.ts +0 -312
- package/src/dynamic-load/page.ts +0 -23
- package/src/dynamic-load/permission.ts +0 -71
- package/src/dynamic-load/permissionset.ts +0 -78
- package/src/dynamic-load/preload_data.ts +0 -104
- package/src/dynamic-load/profile.ts +0 -90
- package/src/dynamic-load/query.ts +0 -22
- package/src/dynamic-load/restrictionRules.ts +0 -23
- package/src/dynamic-load/role.ts +0 -46
- package/src/dynamic-load/shareRules.ts +0 -23
- package/src/dynamic-load/tab.ts +0 -17
- package/src/dynamic-load/tabs.ts +0 -13
- package/src/dynamic-load/translations.ts +0 -54
- package/src/dynamic-load/trigger.ts +0 -236
- package/src/dynamic-load/validation_rule.ts +0 -77
- package/src/dynamic-load/workflow.ts +0 -114
- package/src/errors/index.ts +0 -111
- package/src/formula/core.ts +0 -490
- package/src/formula/field_formula.ts +0 -107
- package/src/formula/index.ts +0 -81
- package/src/formula/params.ts +0 -197
- package/src/formula/recompute.ts +0 -65
- package/src/formula/simple_params.ts +0 -92
- package/src/formula/type.ts +0 -107
- package/src/formula/util.ts +0 -207
- package/src/index.ts +0 -24
- package/src/metadata-register/_base.ts +0 -85
- package/src/metadata-register/app.ts +0 -30
- package/src/metadata-register/chart.ts +0 -9
- package/src/metadata-register/index.ts +0 -123
- package/src/metadata-register/layout.ts +0 -38
- package/src/metadata-register/object.ts +0 -68
- package/src/metadata-register/page.ts +0 -9
- package/src/metadata-register/permissionFields.ts +0 -13
- package/src/metadata-register/permissionset.ts +0 -25
- package/src/metadata-register/process.ts +0 -16
- package/src/metadata-register/processTrigger.ts +0 -24
- package/src/metadata-register/profile.ts +0 -25
- package/src/metadata-register/query.ts +0 -9
- package/src/metadata-register/restrictionRules.ts +0 -12
- package/src/metadata-register/shareRules.ts +0 -13
- package/src/metadata-register/tab.ts +0 -9
- package/src/metadata-register/tabs.ts +0 -43
- package/src/services/datasourceServiceFactory.ts +0 -55
- package/src/services/helpers/graphql/getPrimaryFieldType.ts +0 -48
- package/src/services/helpers/graphql/getQueryFields.ts +0 -36
- package/src/services/helpers/graphql/index.ts +0 -681
- package/src/services/helpers/rest.ts +0 -57
- package/src/services/index.ts +0 -13
- package/src/services/objectService.ts +0 -846
- package/src/services/objectServiceDispatcher.ts +0 -209
- package/src/services/objectServiceFactory.ts +0 -29
- package/src/summary/core.ts +0 -263
- package/src/summary/field_summary.ts +0 -71
- package/src/summary/index.ts +0 -96
- package/src/summary/recompute.ts +0 -31
- package/src/summary/type.ts +0 -60
- package/src/ts-types/index.ts +0 -3
- package/src/ts-types/permissionset.ts +0 -8
- package/src/ts-types/profile.ts +0 -11
- package/src/ts-types/triggerActionParams.ts +0 -22
- package/src/typeorm/driver.ts +0 -379
- package/src/typeorm/index.ts +0 -3
- package/src/typeorm/util.ts +0 -147
- package/src/types/action.ts +0 -52
- package/src/types/app.ts +0 -280
- package/src/types/config.ts +0 -152
- package/src/types/connection.ts +0 -87
- package/src/types/dashboard.ts +0 -91
- package/src/types/datasource.ts +0 -570
- package/src/types/field.ts +0 -370
- package/src/types/field_permission.ts +0 -42
- package/src/types/field_types.ts +0 -1
- package/src/types/index.ts +0 -21
- package/src/types/list_view.ts +0 -56
- package/src/types/listeners.ts +0 -18
- package/src/types/object.ts +0 -2076
- package/src/types/object_dynamic_load.ts +0 -426
- package/src/types/object_events.ts +0 -43
- package/src/types/object_layouts.ts +0 -20
- package/src/types/object_permission.ts +0 -134
- package/src/types/query.ts +0 -28
- package/src/types/report.ts +0 -128
- package/src/types/restrictionRule.ts +0 -57
- package/src/types/schema.ts +0 -273
- package/src/types/shareRule.ts +0 -57
- package/src/types/trigger.ts +0 -88
- package/src/types/userSession.ts +0 -45
- package/src/types/validation_rules.ts +0 -29
- package/src/util/convert.ts +0 -131
- package/src/util/field.ts +0 -93
- package/src/util/function_expression.ts +0 -63
- package/src/util/index.ts +0 -1058
- package/src/util/locale.ts +0 -24
- package/src/util/permission_shares.ts +0 -25
- package/src/util/suffix.ts +0 -78
- package/src/util/transform.ts +0 -239
- package/src/validators/index.ts +0 -36
package/src/formula/util.ts
DELETED
|
@@ -1,207 +0,0 @@
|
|
|
1
|
-
import { SteedosFieldFormulaTypeConfig, SteedosFormulaVarPathTypeConfig, SteedosFormulaVarTypeConfig } from './type';
|
|
2
|
-
import _ = require('lodash')
|
|
3
|
-
|
|
4
|
-
/**
|
|
5
|
-
* 从参数sourceConfigs中找到参数config中引用过的公式字段配置
|
|
6
|
-
* @param config
|
|
7
|
-
* @param sourceConfigs
|
|
8
|
-
*/
|
|
9
|
-
export const getQuotedFieldFormulaConfigs = (config: SteedosFieldFormulaTypeConfig, sourceConfigs: Array<SteedosFieldFormulaTypeConfig>): Array<SteedosFieldFormulaTypeConfig> => {
|
|
10
|
-
const { quotes } = config;
|
|
11
|
-
if (quotes && quotes.length) {
|
|
12
|
-
return sourceConfigs.filter((sourceConfig: SteedosFieldFormulaTypeConfig) => {
|
|
13
|
-
return !!quotes.find((quote) => {
|
|
14
|
-
return quote.object_name === sourceConfig.object_name && quote.field_name === sourceConfig.field_name;
|
|
15
|
-
});
|
|
16
|
-
});
|
|
17
|
-
}
|
|
18
|
-
else {
|
|
19
|
-
return [];
|
|
20
|
-
}
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
/**
|
|
24
|
-
* 参数configA中是否引用了参数configB
|
|
25
|
-
* @param configA
|
|
26
|
-
* @param configB
|
|
27
|
-
*/
|
|
28
|
-
export const isFieldFormulaConfigQuoted = (configA: SteedosFieldFormulaTypeConfig, configB: SteedosFieldFormulaTypeConfig): boolean => {
|
|
29
|
-
let configAQuoteds = getQuotedFieldFormulaConfigs(configA, [configB]);
|
|
30
|
-
return !!configAQuoteds.length;
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
/**
|
|
34
|
-
* 公式字段配置是否引用了某个对象和字段
|
|
35
|
-
* @param config 公式字段配置
|
|
36
|
-
* @param object_name 是否引用了该对象
|
|
37
|
-
* @param field_name 是否引用了该字段
|
|
38
|
-
*/
|
|
39
|
-
export const isFieldFormulaConfigQuotingObjectAndFields =(config: SteedosFieldFormulaTypeConfig, objectName: string, fieldNames?: Array<string>): boolean => {
|
|
40
|
-
const { quotes } = config;
|
|
41
|
-
if (quotes && quotes.length) {
|
|
42
|
-
return !!quotes.find((quote) => {
|
|
43
|
-
if (fieldNames && fieldNames.length) {
|
|
44
|
-
return quote.object_name === objectName && fieldNames.indexOf(quote.field_name) > -1;
|
|
45
|
-
}
|
|
46
|
-
else {
|
|
47
|
-
return quote.object_name === objectName;
|
|
48
|
-
}
|
|
49
|
-
});
|
|
50
|
-
}
|
|
51
|
-
else {
|
|
52
|
-
return false;
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
/**
|
|
57
|
-
* 参数config是否与sourceConfigs中任何一项有双向引用关系
|
|
58
|
-
*
|
|
59
|
-
* @param config
|
|
60
|
-
* @param sourceConfigs
|
|
61
|
-
*/
|
|
62
|
-
export const isFieldFormulaConfigQuotedTwoWays = (config: SteedosFieldFormulaTypeConfig, sourceConfigs: Array<SteedosFieldFormulaTypeConfig>): boolean => {
|
|
63
|
-
let quotedConfigs = getQuotedFieldFormulaConfigs(config, sourceConfigs);
|
|
64
|
-
if(!quotedConfigs.length){
|
|
65
|
-
return false;
|
|
66
|
-
}
|
|
67
|
-
for(let quotedConfig of quotedConfigs){
|
|
68
|
-
let isQuotedConfigQuoted = isFieldFormulaConfigQuoted(quotedConfig, config);
|
|
69
|
-
if(isQuotedConfigQuoted){
|
|
70
|
-
throw new Error(`isFieldFormulaConfigQuotedTwoWays:The field formula config '${config._id}' and '${quotedConfig._id}' is quoted each other.`);
|
|
71
|
-
return true;
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
return false;
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
/**
|
|
78
|
-
* 参数configA与参数configB是否存在双向引用关系
|
|
79
|
-
* @param configA
|
|
80
|
-
* @param configB
|
|
81
|
-
*/
|
|
82
|
-
export const isFieldFormulaConfigQuotedTwoWay = (configA: SteedosFieldFormulaTypeConfig, configB: SteedosFieldFormulaTypeConfig): boolean => {
|
|
83
|
-
return isFieldFormulaConfigQuotedTwoWays(configA, [configB]);
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
/**
|
|
87
|
-
* 往参数configs中插入config,排除掉重复记录
|
|
88
|
-
* @param config
|
|
89
|
-
* @param configs
|
|
90
|
-
*/
|
|
91
|
-
export const addToFieldFormulaConfigs = (config: SteedosFieldFormulaTypeConfig, configs: Array<SteedosFieldFormulaTypeConfig>) => {
|
|
92
|
-
let existedConfig = configs.find((item) => {
|
|
93
|
-
return item._id === config._id
|
|
94
|
-
});
|
|
95
|
-
if (!existedConfig) {
|
|
96
|
-
configs.push(config);
|
|
97
|
-
}
|
|
98
|
-
}
|
|
99
|
-
|
|
100
|
-
const addSortedFieldFormulaConfig = (config: SteedosFieldFormulaTypeConfig, sourceConfigs: Array<SteedosFieldFormulaTypeConfig>, sortedConfigs: Array<SteedosFieldFormulaTypeConfig>) => {
|
|
101
|
-
const quotedConfigs = getQuotedFieldFormulaConfigs(config, sourceConfigs);
|
|
102
|
-
quotedConfigs.forEach((quotedConfig) => {
|
|
103
|
-
addSortedFieldFormulaConfig(quotedConfig, sourceConfigs, sortedConfigs);
|
|
104
|
-
});
|
|
105
|
-
addToFieldFormulaConfigs(config, sortedConfigs);
|
|
106
|
-
}
|
|
107
|
-
|
|
108
|
-
/**
|
|
109
|
-
* 根据公式引用关系对字段公式配置进行排序
|
|
110
|
-
* 这里不能用sort函数,因为sort函数只支持两个数值或对象中两个数值属性对比
|
|
111
|
-
* 规则是把其中被依赖的公式字段配置放前面
|
|
112
|
-
* @param configs
|
|
113
|
-
*/
|
|
114
|
-
export const sortFieldFormulaConfigs = (configs: Array<SteedosFieldFormulaTypeConfig>): Array<SteedosFieldFormulaTypeConfig> => {
|
|
115
|
-
if(configs.length <= 1){
|
|
116
|
-
// 只有一个时,不需要排序,直接返回
|
|
117
|
-
return configs;
|
|
118
|
-
}
|
|
119
|
-
let sortedConfigs = [];
|
|
120
|
-
configs.forEach((config) => {
|
|
121
|
-
addSortedFieldFormulaConfig(config, configs, sortedConfigs);
|
|
122
|
-
});
|
|
123
|
-
return sortedConfigs;
|
|
124
|
-
}
|
|
125
|
-
|
|
126
|
-
/**
|
|
127
|
-
* 当currentUserId为空时,确认参数configs中没有引用$user变量
|
|
128
|
-
* @param configs
|
|
129
|
-
*/
|
|
130
|
-
export const checkCurrentUserIdNotRequiredForFieldFormulas = (configs: SteedosFieldFormulaTypeConfig | Array<SteedosFieldFormulaTypeConfig>) => {
|
|
131
|
-
if (!_.isArray(configs)) {
|
|
132
|
-
configs = [configs];
|
|
133
|
-
}
|
|
134
|
-
if(!configs.length){
|
|
135
|
-
return;
|
|
136
|
-
}
|
|
137
|
-
for(let config of configs){
|
|
138
|
-
let { vars, object_name: objectName, field_name: fieldName, formula } = config;
|
|
139
|
-
let required = isCurrentUserIdRequiredForFormulaVars(vars);
|
|
140
|
-
if(required){
|
|
141
|
-
throw new Error(`The param 'currentUserId' is required while running the formula '${formula.replace("$", "\\$")}' of field '${fieldName}' on the object '${objectName}'`);
|
|
142
|
-
}
|
|
143
|
-
}
|
|
144
|
-
}
|
|
145
|
-
|
|
146
|
-
/**
|
|
147
|
-
* 当currentUserId为空时,判断参数vars中是否有引用$user变量
|
|
148
|
-
* @param configs
|
|
149
|
-
*/
|
|
150
|
-
export const isCurrentUserIdRequiredForFormulaVars = (vars: Array<SteedosFormulaVarTypeConfig>) => {
|
|
151
|
-
let required = !!vars.find(({ is_user_var: isUserVar })=>{
|
|
152
|
-
return isUserVar;
|
|
153
|
-
});
|
|
154
|
-
return required;
|
|
155
|
-
}
|
|
156
|
-
|
|
157
|
-
/**
|
|
158
|
-
* 把公式变量中需要聚合查询的paths转换为aggregate函数级联查询需要的lookups,
|
|
159
|
-
* 比如合同对象某个公式字段中有变量{company_id.organization.name}需要聚合查询的paths为:
|
|
160
|
-
* [{"field_name":"company_id","reference_from":"contracts"},{"field_name":"organization","reference_from":"company"},{"field_name":"name","reference_from":"organizations"}]
|
|
161
|
-
* 将转换返回:
|
|
162
|
-
[{
|
|
163
|
-
$lookup: {
|
|
164
|
-
from: 'company',
|
|
165
|
-
localField: 'company_id',
|
|
166
|
-
foreignField: '_id',
|
|
167
|
-
as: '@lookup_company_id'
|
|
168
|
-
}
|
|
169
|
-
},{
|
|
170
|
-
$lookup: {
|
|
171
|
-
from: 'organizations',
|
|
172
|
-
localField: '@lookup_company_id.organization',
|
|
173
|
-
foreignField: '_id',
|
|
174
|
-
as: '@lookup_company_id.organization'
|
|
175
|
-
}
|
|
176
|
-
}]
|
|
177
|
-
以上返回的lookup可用于当修改组织的名称时,找到合同中引用了该组织记录的记录,并重算其对应的公式字段值
|
|
178
|
-
* @param paths 该参数最后一项的reference_from即为需要聚合查询的对象,亦即为当前正在修改对象(需要查找数据库中有哪些对象记录引用了该对象上的字段)
|
|
179
|
-
*/
|
|
180
|
-
export const getFormulaVarPathsAggregateLookups = (paths: Array<SteedosFormulaVarPathTypeConfig>) => {
|
|
181
|
-
if (!paths.length) {
|
|
182
|
-
return [];
|
|
183
|
-
}
|
|
184
|
-
let lookups = [], currentPath: SteedosFormulaVarPathTypeConfig, nextPath: SteedosFormulaVarPathTypeConfig;
|
|
185
|
-
let tempLookupAs: string = "", tempLookupLocalField: string = "";
|
|
186
|
-
for (let i = 0; i < paths.length - 1; i++) {
|
|
187
|
-
currentPath = paths[i];
|
|
188
|
-
nextPath = paths[i + 1];
|
|
189
|
-
tempLookupLocalField = currentPath.field_name;
|
|
190
|
-
if(tempLookupAs){
|
|
191
|
-
tempLookupLocalField = `${tempLookupAs}.${tempLookupLocalField}`;
|
|
192
|
-
tempLookupAs = tempLookupLocalField;
|
|
193
|
-
}
|
|
194
|
-
else{
|
|
195
|
-
tempLookupAs = `__lookup__${currentPath.field_name}`;
|
|
196
|
-
}
|
|
197
|
-
lookups.push({
|
|
198
|
-
$lookup: {
|
|
199
|
-
from: nextPath.reference_from,
|
|
200
|
-
localField: tempLookupLocalField,
|
|
201
|
-
foreignField: '_id',
|
|
202
|
-
as: tempLookupAs
|
|
203
|
-
}
|
|
204
|
-
});
|
|
205
|
-
}
|
|
206
|
-
return lookups;
|
|
207
|
-
}
|
package/src/index.ts
DELETED
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* @Author: baozhoutao@hotoa.com
|
|
3
|
-
* @Date: 2022-03-28 14:16:02
|
|
4
|
-
* @LastEditors: sunhaolin@hotoa.com
|
|
5
|
-
* @LastEditTime: 2022-05-14 09:37:36
|
|
6
|
-
* @Description:
|
|
7
|
-
*/
|
|
8
|
-
export * from './types'
|
|
9
|
-
export * from "./driver"
|
|
10
|
-
export * from "./util"
|
|
11
|
-
export * from "./formula"
|
|
12
|
-
export * from "./summary"
|
|
13
|
-
export * from "./errors"
|
|
14
|
-
export * from "./actions"
|
|
15
|
-
export * from "./dynamic-load"
|
|
16
|
-
export * from './metadata-register/query'
|
|
17
|
-
export * from './metadata-register/chart'
|
|
18
|
-
export * from './metadata-register/page'
|
|
19
|
-
export * from './metadata-register/tab'
|
|
20
|
-
export * from './metadata-register/shareRules'
|
|
21
|
-
export * from './metadata-register/restrictionRules'
|
|
22
|
-
export * from './metadata-register/permissionFields'
|
|
23
|
-
export * from './metadata-register/process'
|
|
24
|
-
export * from './metadata-register/processTrigger'
|
|
@@ -1,85 +0,0 @@
|
|
|
1
|
-
import { JsonMap } from "@salesforce/ts-types"
|
|
2
|
-
import * as _ from 'lodash';
|
|
3
|
-
const clone = require('clone');
|
|
4
|
-
export class RegisterBase{
|
|
5
|
-
serviceName;
|
|
6
|
-
constructor(serviceName){
|
|
7
|
-
this.serviceName = serviceName;
|
|
8
|
-
}
|
|
9
|
-
|
|
10
|
-
getApiName(metadata) {
|
|
11
|
-
return metadata._id || metadata.name;
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
async register(broker, packageServiceName, config){
|
|
15
|
-
const metadata = clone(config);
|
|
16
|
-
const res = await broker.call(`${this.serviceName}.add`, { apiName: this.getApiName(metadata), data: metadata }, {
|
|
17
|
-
meta: {
|
|
18
|
-
metadataServiceName: packageServiceName,
|
|
19
|
-
caller: {
|
|
20
|
-
nodeID: broker.nodeID,
|
|
21
|
-
service: {
|
|
22
|
-
name: packageServiceName,
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
}});
|
|
26
|
-
return res;
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
async mregister(broker, packageServiceName, configs) {
|
|
30
|
-
const metadatas = clone(configs);
|
|
31
|
-
|
|
32
|
-
const mdata = {};
|
|
33
|
-
|
|
34
|
-
_.map(metadatas, (metadata) => {
|
|
35
|
-
mdata[this.getApiName(metadata)] = metadata
|
|
36
|
-
})
|
|
37
|
-
|
|
38
|
-
const res = await broker.call(`${this.serviceName}.madd`, { data: mdata }, {
|
|
39
|
-
meta: {
|
|
40
|
-
metadataServiceName: packageServiceName,
|
|
41
|
-
caller: {
|
|
42
|
-
nodeID: broker.nodeID,
|
|
43
|
-
service: {
|
|
44
|
-
name: packageServiceName,
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
});
|
|
49
|
-
return res;
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
async remove(broker, packageServiceName, metadataApiNameOrConfig: string | JsonMap) {
|
|
53
|
-
let metadataApiName = metadataApiNameOrConfig;
|
|
54
|
-
if (_.isObject(metadataApiName)) {
|
|
55
|
-
metadataApiName = this.getApiName(metadataApiNameOrConfig);
|
|
56
|
-
}
|
|
57
|
-
const res = await broker.call(`${this.serviceName}.delete`, { apiName: this.getApiName(metadataApiNameOrConfig) }, {
|
|
58
|
-
meta: {
|
|
59
|
-
metadataServiceName: packageServiceName,
|
|
60
|
-
caller: {
|
|
61
|
-
nodeID: broker.nodeID,
|
|
62
|
-
service: {
|
|
63
|
-
name: packageServiceName,
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
});
|
|
68
|
-
return res;
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
async get(broker, metadataApiName){
|
|
72
|
-
const res = await broker.call(`${this.serviceName}.get`, {metadataApiName: metadataApiName});
|
|
73
|
-
return res;
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
async getAll(broker){
|
|
77
|
-
const res = await broker.call(`${this.serviceName}.getAll`);
|
|
78
|
-
return res;
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
async find(broker, params){
|
|
82
|
-
const res = await broker.call(`${this.serviceName}.filter`, params);
|
|
83
|
-
return res;
|
|
84
|
-
}
|
|
85
|
-
}
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
const clone = require('clone');
|
|
2
|
-
export async function registerApp(broker, serviceName, appConfig) {
|
|
3
|
-
const metadata = clone(appConfig);
|
|
4
|
-
delete metadata.triggers
|
|
5
|
-
const res = await broker.call("apps.add", {appApiName: metadata._id || metadata.name ,data: metadata}, {meta: {
|
|
6
|
-
metadataServiceName: serviceName,
|
|
7
|
-
caller: {
|
|
8
|
-
nodeID: broker.nodeID,
|
|
9
|
-
service: {
|
|
10
|
-
name: serviceName,
|
|
11
|
-
}
|
|
12
|
-
}
|
|
13
|
-
}});
|
|
14
|
-
return res;
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
export async function removeApp(broker, appApiName) {
|
|
18
|
-
const res = await broker.call("apps.delete", {appApiName: appApiName});
|
|
19
|
-
return res;
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
export async function getApp(broker, appApiName) {
|
|
23
|
-
const res = await broker.call("apps.get", {appApiName: appApiName});
|
|
24
|
-
return res;
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
export async function getApps(broker) {
|
|
28
|
-
const res = await broker.call("apps.getAll");
|
|
29
|
-
return res;
|
|
30
|
-
}
|
|
@@ -1,123 +0,0 @@
|
|
|
1
|
-
import { registerObject, removeObject, addObjectConfig, getObjectsConfig, getObjectConfig } from './object';
|
|
2
|
-
import { registerApp, getApp, getApps, removeApp } from './app';
|
|
3
|
-
import { getProfile, getProfiles, registerProfile } from './profile';
|
|
4
|
-
import { registerLayout, getLayout, getLayouts, removeLayout, filterLayouts } from './layout';
|
|
5
|
-
import { getPermissionset, getPermissionsets, registerPermissionset } from './permissionset';
|
|
6
|
-
import { getTab, getTabs, registerTab, removeTab } from './tabs';
|
|
7
|
-
|
|
8
|
-
export enum MetadataType {
|
|
9
|
-
Object,
|
|
10
|
-
ObjectField,
|
|
11
|
-
ObjectListView,
|
|
12
|
-
ObjectAction,
|
|
13
|
-
ObjectButton
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
export class MetadataRegister{
|
|
17
|
-
private broker: any;
|
|
18
|
-
|
|
19
|
-
constructor(metadataBroker){
|
|
20
|
-
this.broker = metadataBroker;
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
async addObjectConfig(serviceName, objectConfig: any): Promise<boolean>{
|
|
24
|
-
return await addObjectConfig(this.broker, serviceName, objectConfig);
|
|
25
|
-
}
|
|
26
|
-
async getObjectsConfig(datasourceName: string): Promise<any>{
|
|
27
|
-
return await getObjectsConfig(this.broker, datasourceName);
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
async getObjectConfig(objectApiName): Promise<any>{
|
|
31
|
-
return await getObjectConfig(this.broker, objectApiName);
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
async addObject(serviceName, objectConfig: any): Promise<boolean>{
|
|
35
|
-
return await registerObject(this.broker, serviceName, objectConfig);
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
async removeObject(objectApiName: any): Promise<boolean>{
|
|
39
|
-
return await removeObject(this.broker, objectApiName);
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
async addApp(serviceName, appConfig: any): Promise<boolean>{
|
|
43
|
-
return await registerApp(this.broker, serviceName, appConfig);
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
async removeApp(appApiName: any): Promise<boolean>{
|
|
47
|
-
return await removeApp(this.broker, appApiName);
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
async getApp(appApiName): Promise<any>{
|
|
51
|
-
return await getApp(this.broker, appApiName);
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
async getApps(): Promise<any>{
|
|
55
|
-
return await getApps(this.broker);
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
async addTab(serviceName, tabConfig: any): Promise<boolean>{
|
|
59
|
-
return await registerTab(this.broker, serviceName, tabConfig);
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
async removeTab(tabApiName: any): Promise<boolean>{
|
|
63
|
-
return await removeTab(this.broker, tabApiName);
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
async getTab(tabApiName): Promise<any>{
|
|
67
|
-
return await getTab(this.broker, tabApiName);
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
async getTabs(): Promise<any>{
|
|
71
|
-
return await getTabs(this.broker);
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
async addLayout(serviceName, config: any): Promise<boolean>{
|
|
75
|
-
return await registerLayout(this.broker, serviceName, config);
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
async removeLayout(objectLayoutFullName: any): Promise<boolean>{
|
|
79
|
-
return await removeLayout(this.broker, objectLayoutFullName);
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
async getLayout(objectLayoutFullName): Promise<any>{
|
|
83
|
-
return await getLayout(this.broker, objectLayoutFullName);
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
async getLayouts(): Promise<any>{
|
|
87
|
-
return await getLayouts(this.broker);
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
async filterLayouts(profileApiName, spaceId, objectApiName?):Promise<any>{
|
|
91
|
-
return await filterLayouts(this.broker, profileApiName, spaceId, objectApiName);
|
|
92
|
-
}
|
|
93
|
-
|
|
94
|
-
async addProfile(serviceName, profileConfig): Promise<boolean>{
|
|
95
|
-
return await registerProfile(this.broker, serviceName, profileConfig);
|
|
96
|
-
}
|
|
97
|
-
async getProfile(profileApiName): Promise<any>{
|
|
98
|
-
return await getProfile(this.broker, profileApiName);
|
|
99
|
-
}
|
|
100
|
-
async getProfiles(): Promise<any>{
|
|
101
|
-
return await getProfiles(this.broker);
|
|
102
|
-
}
|
|
103
|
-
|
|
104
|
-
async addPermissionset(serviceName, permissionsetConfig): Promise<boolean>{
|
|
105
|
-
return await registerPermissionset(this.broker, serviceName, permissionsetConfig);
|
|
106
|
-
}
|
|
107
|
-
async getPermissionset(permissionsetApiName): Promise<any>{
|
|
108
|
-
return await getPermissionset(this.broker, permissionsetApiName);
|
|
109
|
-
}
|
|
110
|
-
async getPermissionsets(): Promise<any>{
|
|
111
|
-
return await getPermissionsets(this.broker);
|
|
112
|
-
}
|
|
113
|
-
|
|
114
|
-
// register(type: MetadataType, metadata: any){
|
|
115
|
-
// switch (type) {
|
|
116
|
-
// case MetadataType.Object:
|
|
117
|
-
// registerObject(this.broker, metadata);
|
|
118
|
-
// break;
|
|
119
|
-
// default:
|
|
120
|
-
// break;
|
|
121
|
-
// }
|
|
122
|
-
// }
|
|
123
|
-
}
|
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
const clone = require('clone');
|
|
2
|
-
const SERVICE_NAME = 'layouts';
|
|
3
|
-
export async function registerLayout(broker, serviceName, config) {
|
|
4
|
-
const metadata = clone(config);
|
|
5
|
-
delete metadata.triggers
|
|
6
|
-
const res = await broker.call(`${SERVICE_NAME}.add`, {layoutApiName: metadata._id || metadata.name ,data: metadata}, {meta: {
|
|
7
|
-
metadataServiceName: serviceName,
|
|
8
|
-
caller: {
|
|
9
|
-
nodeID: broker.nodeID,
|
|
10
|
-
service: {
|
|
11
|
-
name: serviceName,
|
|
12
|
-
}
|
|
13
|
-
}
|
|
14
|
-
}});
|
|
15
|
-
return res;
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
export async function removeLayout(broker, objectLayoutFullName) {
|
|
19
|
-
const res = await broker.call(`${SERVICE_NAME}.delete`, {objectLayoutFullName: objectLayoutFullName});
|
|
20
|
-
return res;
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
export async function getLayout(broker, objectLayoutFullName) {
|
|
24
|
-
const res = await broker.call(`${SERVICE_NAME}.get`, {objectLayoutFullName: objectLayoutFullName});
|
|
25
|
-
return res;
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
export async function getLayouts(broker) {
|
|
29
|
-
const res = await broker.call(`${SERVICE_NAME}.getAll`);
|
|
30
|
-
return res;
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
export async function filterLayouts(broker, profileApiName, spaceId?, objectApiName?){
|
|
34
|
-
const res = await broker.call(`${SERVICE_NAME}.filter`, {
|
|
35
|
-
objectApiName, spaceId, profileApiName
|
|
36
|
-
});
|
|
37
|
-
return res;
|
|
38
|
-
}
|
|
@@ -1,68 +0,0 @@
|
|
|
1
|
-
import * as _ from 'underscore';
|
|
2
|
-
import { objectToJson, jsonToObject } from '../util/convert';
|
|
3
|
-
const clone = require('clone');
|
|
4
|
-
|
|
5
|
-
export async function registerObject(broker, serviceName, objectConfig) {
|
|
6
|
-
// const serviceName = getObjectServiceName(objectConfig.name);
|
|
7
|
-
const metadata = clone(objectConfig);
|
|
8
|
-
delete metadata.triggers
|
|
9
|
-
const res = await broker.call("objects.add", {data: metadata}, {meta: {
|
|
10
|
-
caller: {
|
|
11
|
-
nodeID: broker.nodeID,
|
|
12
|
-
service: {
|
|
13
|
-
name: serviceName,
|
|
14
|
-
// version: broker.service.version, TODO
|
|
15
|
-
// fullName: broker.service.fullName, TODO
|
|
16
|
-
}
|
|
17
|
-
}
|
|
18
|
-
}});
|
|
19
|
-
// if (res) { //TODO && objectConfig.hidden != true
|
|
20
|
-
// await createObjectService(broker, serviceName, objectConfig)
|
|
21
|
-
// }
|
|
22
|
-
return res;
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
export async function addObjectConfig(broker, serviceName, objectConfig) {
|
|
26
|
-
let metadata = clone(objectConfig);
|
|
27
|
-
delete metadata.triggers;
|
|
28
|
-
delete metadata.listeners;
|
|
29
|
-
delete metadata.methods;
|
|
30
|
-
objectToJson(metadata);
|
|
31
|
-
const res = await broker.call("objects.addConfig", {data: metadata}, {meta: {
|
|
32
|
-
metadataServiceName: serviceName,
|
|
33
|
-
caller: {
|
|
34
|
-
nodeID: broker.nodeID
|
|
35
|
-
}
|
|
36
|
-
}});
|
|
37
|
-
return res;
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
export async function getObjectsConfig(broker, datasourceName){
|
|
41
|
-
const objectsConfig = await broker.call('objects.getAll', {datasource: datasourceName})
|
|
42
|
-
_.map(objectsConfig, (metadataConfig)=>{
|
|
43
|
-
if(metadataConfig && metadataConfig.metadata){
|
|
44
|
-
jsonToObject(metadataConfig.metadata)
|
|
45
|
-
}
|
|
46
|
-
})
|
|
47
|
-
return objectsConfig;
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
export async function getObjectConfig(broker, objectApiName){
|
|
51
|
-
const objectsConfig = await broker.call('objects.get', {objectApiName: objectApiName})
|
|
52
|
-
_.map(objectsConfig, (metadataConfig)=>{
|
|
53
|
-
if(metadataConfig && metadataConfig.metadata){
|
|
54
|
-
jsonToObject(metadataConfig.metadata)
|
|
55
|
-
}
|
|
56
|
-
})
|
|
57
|
-
return objectsConfig;
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
export async function removeObject(broker, objectApiName) {
|
|
61
|
-
// const serviceName = getObjectServiceName(objectConfig.name);
|
|
62
|
-
const res = await broker.call("objects.delete", {objectApiName: objectApiName}, {meta: {
|
|
63
|
-
caller: {
|
|
64
|
-
nodeID: broker.nodeID,
|
|
65
|
-
}
|
|
66
|
-
}});
|
|
67
|
-
return res;
|
|
68
|
-
}
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import { RegisterBase } from "./_base";
|
|
2
|
-
const SERVICE_NAME = 'permission_fields';
|
|
3
|
-
class RegisterPermissionFields extends RegisterBase {
|
|
4
|
-
constructor() {
|
|
5
|
-
super(SERVICE_NAME);
|
|
6
|
-
}
|
|
7
|
-
|
|
8
|
-
getApiName(config) {
|
|
9
|
-
return `${config.name}`
|
|
10
|
-
}
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
export const registerPermissionFields = new RegisterPermissionFields();
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
const clone = require('clone');
|
|
2
|
-
export async function registerPermissionset(broker, serviceName, permissionsetConfig) {
|
|
3
|
-
const metadata = clone(permissionsetConfig);
|
|
4
|
-
delete metadata.triggers
|
|
5
|
-
const res = await broker.call("permissionsets.add", {permissionsetApiName: metadata._id || metadata.name ,data: metadata}, {meta: {
|
|
6
|
-
metadataServiceName: serviceName,
|
|
7
|
-
caller: {
|
|
8
|
-
nodeID: broker.nodeID,
|
|
9
|
-
service: {
|
|
10
|
-
name: serviceName,
|
|
11
|
-
}
|
|
12
|
-
}
|
|
13
|
-
}});
|
|
14
|
-
return res;
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
export async function getPermissionset(broker, permissionsetApiName) {
|
|
18
|
-
const res = await broker.call("permissionsets.get", {permissionsetApiName: permissionsetApiName});
|
|
19
|
-
return res;
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
export async function getPermissionsets(broker) {
|
|
23
|
-
const res = await broker.call("permissionsets.getAll");
|
|
24
|
-
return res;
|
|
25
|
-
}
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* @Author: sunhaolin@hotoa.com
|
|
3
|
-
* @Date: 2022-03-30 11:20:03
|
|
4
|
-
* @LastEditors: sunhaolin@hotoa.com
|
|
5
|
-
* @LastEditTime: 2022-03-30 11:20:35
|
|
6
|
-
* @Description:
|
|
7
|
-
*/
|
|
8
|
-
import { RegisterBase } from "./_base";
|
|
9
|
-
const SERVICE_NAME = 'process';
|
|
10
|
-
class RegisterProcess extends RegisterBase{
|
|
11
|
-
constructor(){
|
|
12
|
-
super(SERVICE_NAME);
|
|
13
|
-
}
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
export const registerProcess = new RegisterProcess();
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
import { RegisterBase } from "./_base";
|
|
2
|
-
const SERVICE_NAME = 'processTrigger';
|
|
3
|
-
class RegisterProcessTrigger extends RegisterBase {
|
|
4
|
-
constructor() {
|
|
5
|
-
super(SERVICE_NAME);
|
|
6
|
-
}
|
|
7
|
-
|
|
8
|
-
/**
|
|
9
|
-
*
|
|
10
|
-
* @param metadata
|
|
11
|
-
* {
|
|
12
|
-
"name": name,
|
|
13
|
-
"listenTo": wt.listenTo,
|
|
14
|
-
"when": when,
|
|
15
|
-
"handler": handler.toString()
|
|
16
|
-
}
|
|
17
|
-
* @returns
|
|
18
|
-
*/
|
|
19
|
-
getApiName(metadata) {
|
|
20
|
-
return `${metadata.listenTo}.${metadata.when}.${metadata.name}`;
|
|
21
|
-
}
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
export const registerProcessTrigger = new RegisterProcessTrigger();
|