@steedos/objectql 2.2.51-beta.1 → 2.2.51-beta.2
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 +10 -10
- 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/consts.ts +0 -25
- package/src/services/helpers/graphql/getPrimaryFieldType.ts +0 -48
- package/src/services/helpers/graphql/getQueryFields.ts +0 -51
- package/src/services/helpers/graphql/index.ts +0 -666
- 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 -1066
- 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
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
const clone = require('clone');
|
|
2
|
-
export async function registerProfile(broker, serviceName, profileConfig) {
|
|
3
|
-
const metadata = clone(profileConfig);
|
|
4
|
-
delete metadata.triggers
|
|
5
|
-
const res = await broker.call("permissionsets.addProfile", {profileApiName: 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 getProfile(broker, profileApiName) {
|
|
18
|
-
const res = await broker.call("permissionsets.getProfile", {profileApiName: profileApiName});
|
|
19
|
-
return res;
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
export async function getProfiles(broker) {
|
|
23
|
-
const res = await broker.call("permissionsets.getProfiles");
|
|
24
|
-
return res;
|
|
25
|
-
}
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import { RegisterBase } from "./_base";
|
|
2
|
-
const SERVICE_NAME = 'restriction_rules';
|
|
3
|
-
class RegisterRestrictionRules extends RegisterBase {
|
|
4
|
-
constructor() {
|
|
5
|
-
super(SERVICE_NAME);
|
|
6
|
-
}
|
|
7
|
-
|
|
8
|
-
getApiName(config) {
|
|
9
|
-
return `${config.object_name}.${config.name}`
|
|
10
|
-
}
|
|
11
|
-
}
|
|
12
|
-
export const registerRestrictionRules = new RegisterRestrictionRules();
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import { RegisterBase } from "./_base";
|
|
2
|
-
const SERVICE_NAME = 'share_rules';
|
|
3
|
-
class RegisterShareRules extends RegisterBase {
|
|
4
|
-
constructor() {
|
|
5
|
-
super(SERVICE_NAME);
|
|
6
|
-
}
|
|
7
|
-
|
|
8
|
-
getApiName(config) {
|
|
9
|
-
return `${config.object_name}.${config.name}`
|
|
10
|
-
}
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
export const registerShareRules = new RegisterShareRules();
|
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
const clone = require('clone');
|
|
2
|
-
const SERVICE_NAME = 'tabs';
|
|
3
|
-
|
|
4
|
-
/***
|
|
5
|
-
* 此文件内容不再维护,迁移到tab.ts
|
|
6
|
-
*/
|
|
7
|
-
|
|
8
|
-
export async function registerTab(broker, serviceName, config) {
|
|
9
|
-
const metadata = clone(config);
|
|
10
|
-
delete metadata.triggers
|
|
11
|
-
const res = await broker.call(`${SERVICE_NAME}.add`, {tabApiName: metadata.name ,data: metadata}, {meta: {
|
|
12
|
-
metadataServiceName: serviceName,
|
|
13
|
-
caller: {
|
|
14
|
-
nodeID: broker.nodeID,
|
|
15
|
-
service: {
|
|
16
|
-
name: serviceName,
|
|
17
|
-
}
|
|
18
|
-
}
|
|
19
|
-
}});
|
|
20
|
-
return res;
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
export async function removeTab(broker, tabApiName) {
|
|
24
|
-
const res = await broker.call(`${SERVICE_NAME}.delete`, {tabApiName: tabApiName});
|
|
25
|
-
return res;
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
export async function getTab(broker, tabApiName) {
|
|
29
|
-
const res = await broker.call(`${SERVICE_NAME}.get`, {tabApiName: tabApiName});
|
|
30
|
-
return res;
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
export async function getTabs(broker) {
|
|
34
|
-
const res = await broker.call(`${SERVICE_NAME}.getAll`);
|
|
35
|
-
return res;
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
export async function filterTabs(broker, tabApiName, spaceId?, objectApiName?){
|
|
39
|
-
const res = await broker.call(`${SERVICE_NAME}.filter`, {
|
|
40
|
-
objectApiName, spaceId, tabApiName
|
|
41
|
-
});
|
|
42
|
-
return res;
|
|
43
|
-
}
|
|
@@ -1,55 +0,0 @@
|
|
|
1
|
-
import * as _ from 'underscore';
|
|
2
|
-
import { getDataSourceServiceName } from './index';
|
|
3
|
-
import { jsonToObject } from '../util/convert';
|
|
4
|
-
import { getDataSource } from '../types/datasource';
|
|
5
|
-
const LocalDataSourceServices = {};
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
export async function createDataSourceService(broker, dataSource) {
|
|
9
|
-
const dataSourceName = dataSource.name;
|
|
10
|
-
const serviceName = getDataSourceServiceName(dataSourceName);
|
|
11
|
-
|
|
12
|
-
if (LocalDataSourceServices[serviceName]) {
|
|
13
|
-
return;
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
let service = broker.createService({
|
|
17
|
-
name: serviceName,
|
|
18
|
-
events: {
|
|
19
|
-
[`${dataSourceName}.*.metadata.objects.inserted`]: {
|
|
20
|
-
handler(ctx) {
|
|
21
|
-
let objectConfig = ctx.params.data;
|
|
22
|
-
jsonToObject(objectConfig)
|
|
23
|
-
dataSource.initObject(objectConfig)
|
|
24
|
-
/**
|
|
25
|
-
* 每次都需要初始化,TypeORM不适用于微服务模式
|
|
26
|
-
*/
|
|
27
|
-
dataSource.initTypeORM();
|
|
28
|
-
}
|
|
29
|
-
},
|
|
30
|
-
[`${dataSourceName}.*.metadata.objects.deleted`]: {
|
|
31
|
-
handler(ctx) {
|
|
32
|
-
if (this.timeoutId) {
|
|
33
|
-
clearTimeout(this.timeoutId);
|
|
34
|
-
}
|
|
35
|
-
this.timeoutId = setTimeout(function(){
|
|
36
|
-
try {
|
|
37
|
-
const datasource = getDataSource(dataSourceName);
|
|
38
|
-
if (datasource) {
|
|
39
|
-
datasource.flushCacheObjects();
|
|
40
|
-
}
|
|
41
|
-
} catch (error) {
|
|
42
|
-
console.error(error)
|
|
43
|
-
}
|
|
44
|
-
}, 1000 * 0.1);
|
|
45
|
-
}
|
|
46
|
-
},
|
|
47
|
-
}
|
|
48
|
-
})
|
|
49
|
-
if (!broker.started) { //如果broker未启动则手动启动service
|
|
50
|
-
await broker._restartService(service)
|
|
51
|
-
}
|
|
52
|
-
await broker.waitForServices(service.name, null, 10);
|
|
53
|
-
LocalDataSourceServices[serviceName] = true;
|
|
54
|
-
return service
|
|
55
|
-
}
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* @Author: sunhaolin@hotoa.com
|
|
3
|
-
* @Date: 2022-06-20 19:02:47
|
|
4
|
-
* @LastEditors: sunhaolin@hotoa.com
|
|
5
|
-
* @LastEditTime: 2022-06-20 19:03:27
|
|
6
|
-
* @Description:
|
|
7
|
-
*/
|
|
8
|
-
|
|
9
|
-
export const BASIC_TYPE_MAPPING = {
|
|
10
|
-
'text': 'String',
|
|
11
|
-
'textarea': 'String',
|
|
12
|
-
'html': 'String',
|
|
13
|
-
'url': 'String',
|
|
14
|
-
'email': 'String',
|
|
15
|
-
'date': 'Date',
|
|
16
|
-
'datetime': 'Date',
|
|
17
|
-
'time': 'Date',
|
|
18
|
-
'number': 'Float',
|
|
19
|
-
'currency': 'Float',
|
|
20
|
-
'boolean': 'Boolean'
|
|
21
|
-
};
|
|
22
|
-
export const EXPAND_SUFFIX = '__expand';
|
|
23
|
-
export const DISPLAY_PREFIX = '_display';
|
|
24
|
-
export const RELATED_PREFIX = '_related';
|
|
25
|
-
export const GRAPHQL_ACTION_PREFIX = 'graphql_';
|
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* @Author: sunhaolin@hotoa.com
|
|
3
|
-
* @Date: 2022-06-16 14:37:39
|
|
4
|
-
* @LastEditors: sunhaolin@hotoa.com
|
|
5
|
-
* @LastEditTime: 2022-06-16 16:28:20
|
|
6
|
-
* @Description: 获取对象主键字段类型,用于生成对象的graphql schema,如 id: ID!
|
|
7
|
-
*/
|
|
8
|
-
|
|
9
|
-
import { SteedosObjectTypeConfig, getDataSource, SteedosDatabaseDriverType } from "../../..";
|
|
10
|
-
import _ = require("lodash");
|
|
11
|
-
|
|
12
|
-
/**
|
|
13
|
-
* 根据对象所属数据源的类型,生成grapqhl shcmea的主键字段定义
|
|
14
|
-
* @param objectConfig 对象配置
|
|
15
|
-
*/
|
|
16
|
-
export function getPrimaryFieldType(objectConfig: SteedosObjectTypeConfig) {
|
|
17
|
-
let idType = '';
|
|
18
|
-
let fields = objectConfig.fields;
|
|
19
|
-
const datasource = getDataSource(objectConfig.datasource);
|
|
20
|
-
if (datasource.driver === SteedosDatabaseDriverType.MeteorMongo || datasource.driver === SteedosDatabaseDriverType.Mongo) {
|
|
21
|
-
if (!_.has(fields, "_id")) {
|
|
22
|
-
idType = '_id: String'
|
|
23
|
-
}
|
|
24
|
-
} else {
|
|
25
|
-
// 设置非默认数据源的主键字段,如mysql
|
|
26
|
-
for (let fieldName in fields) {
|
|
27
|
-
let field = fields[fieldName];
|
|
28
|
-
if (field.primary) {
|
|
29
|
-
let fieldType = ''
|
|
30
|
-
switch (field.type) {
|
|
31
|
-
case 'text' || 'textarea':
|
|
32
|
-
fieldType = 'String';
|
|
33
|
-
break;
|
|
34
|
-
case 'number':
|
|
35
|
-
fieldType = 'Float';
|
|
36
|
-
break;
|
|
37
|
-
default:
|
|
38
|
-
fieldType = 'JSON'
|
|
39
|
-
break;
|
|
40
|
-
}
|
|
41
|
-
idType = `_id: ${fieldType}`;
|
|
42
|
-
break;
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
return idType;
|
|
48
|
-
}
|
|
@@ -1,51 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* @Author: sunhaolin@hotoa.com
|
|
3
|
-
* @Date: 2022-06-15 15:50:29
|
|
4
|
-
* @LastEditors: sunhaolin@hotoa.com
|
|
5
|
-
* @LastEditTime: 2022-06-20 19:36:20
|
|
6
|
-
* @Description: 根据query的请求体解析出查询的字段
|
|
7
|
-
*/
|
|
8
|
-
import { GraphQLResolveInfo } from 'graphql';
|
|
9
|
-
import {
|
|
10
|
-
parseResolveInfo,
|
|
11
|
-
simplifyParsedResolveInfoFragmentWithType,
|
|
12
|
-
ResolveTree,
|
|
13
|
-
} from 'graphql-parse-resolve-info';
|
|
14
|
-
|
|
15
|
-
import _ = require('lodash');
|
|
16
|
-
|
|
17
|
-
import { DISPLAY_PREFIX, EXPAND_SUFFIX, RELATED_PREFIX } from './consts'
|
|
18
|
-
|
|
19
|
-
export function getQueryFields(resolveInfo: GraphQLResolveInfo) {
|
|
20
|
-
const fieldsName = []
|
|
21
|
-
const parsedResolveInfoFragment: ResolveTree = <ResolveTree>parseResolveInfo(resolveInfo);
|
|
22
|
-
const simplifiedFragment = simplifyParsedResolveInfoFragmentWithType(
|
|
23
|
-
parsedResolveInfoFragment,
|
|
24
|
-
resolveInfo.returnType
|
|
25
|
-
);
|
|
26
|
-
|
|
27
|
-
const fields = simplifiedFragment.fields;
|
|
28
|
-
if (!_.isEmpty(fields)) {
|
|
29
|
-
for (const key in fields) {
|
|
30
|
-
const field = fields[key];
|
|
31
|
-
const name = field.name
|
|
32
|
-
// 如果field.name以__expand结尾,则将field.name去掉__expand后,作为查询的字段名
|
|
33
|
-
if (name.endsWith(EXPAND_SUFFIX)) {
|
|
34
|
-
fieldsName.push(name.slice(0, -EXPAND_SUFFIX.length));
|
|
35
|
-
continue
|
|
36
|
-
}
|
|
37
|
-
// 如果field.name值为_display,则跳过
|
|
38
|
-
if (name === DISPLAY_PREFIX) {
|
|
39
|
-
continue
|
|
40
|
-
}
|
|
41
|
-
// 如果field.name以_related开头,则跳过
|
|
42
|
-
if (name.startsWith(RELATED_PREFIX)) {
|
|
43
|
-
continue
|
|
44
|
-
}
|
|
45
|
-
fieldsName.push(name)
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
// console.log(fieldsName);
|
|
49
|
-
return fieldsName;
|
|
50
|
-
|
|
51
|
-
}
|