midway-fatcms 0.0.4 → 0.0.6
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/README.md +635 -352
- package/dist/controller/manage/CrudStandardDesignApi.d.ts +0 -2
- package/dist/controller/manage/CrudStandardDesignApi.js +11 -85
- package/dist/index.d.ts +2 -0
- package/dist/index.js +2 -0
- package/dist/libs/crud-pro/CrudPro.d.ts +9 -1
- package/dist/libs/crud-pro/CrudPro.js +15 -0
- package/dist/libs/crud-pro/README.md +809 -0
- package/dist/libs/crud-pro/README_FUNC.md +193 -0
- package/dist/libs/crud-pro/exceptions.d.ts +2 -0
- package/dist/libs/crud-pro/exceptions.js +2 -0
- package/dist/libs/crud-pro/interfaces.d.ts +34 -1
- package/dist/libs/crud-pro/models/ExecuteContext.d.ts +3 -3
- package/dist/libs/crud-pro/models/ExecuteContext.js +2 -0
- package/dist/libs/crud-pro/models/RequestModel.d.ts +41 -1
- package/dist/libs/crud-pro/models/RequestModel.js +103 -39
- package/dist/libs/crud-pro/models/ResModel.d.ts +6 -4
- package/dist/libs/crud-pro/models/ServiceHub.d.ts +1 -0
- package/dist/libs/crud-pro/models/keys.d.ts +6 -1
- package/dist/libs/crud-pro/models/keys.js +5 -0
- package/dist/libs/crud-pro/services/CrudProDataTypeConvertService.d.ts +52 -0
- package/dist/libs/crud-pro/services/CrudProDataTypeConvertService.js +158 -0
- package/dist/libs/crud-pro/services/CrudProExecuteSqlService.js +20 -1
- package/dist/libs/crud-pro/services/CrudProFieldValidateService.d.ts +7 -0
- package/dist/libs/crud-pro/services/CrudProFieldValidateService.js +32 -0
- package/dist/libs/crud-pro/services/CrudProGenSqlService.d.ts +13 -0
- package/dist/libs/crud-pro/services/CrudProGenSqlService.js +44 -7
- package/dist/libs/crud-pro/services/CrudProOriginToExecuteSql.d.ts +43 -0
- package/dist/libs/crud-pro/services/CrudProOriginToExecuteSql.js +132 -1
- package/dist/libs/crud-pro/services/CrudProTableMetaService.d.ts +15 -1
- package/dist/libs/crud-pro/services/CrudProTableMetaService.js +107 -0
- package/dist/libs/crud-pro/services/CurdProServiceHub.d.ts +5 -1
- package/dist/libs/crud-pro/services/CurdProServiceHub.js +11 -0
- package/dist/libs/crud-pro/utils/DateTimeUtils.d.ts +1 -0
- package/dist/libs/crud-pro/utils/DateTimeUtils.js +3 -0
- package/dist/libs/crud-pro/utils/MixinUtils.d.ts +32 -0
- package/dist/libs/crud-pro/utils/MixinUtils.js +85 -1
- package/dist/libs/crud-pro/utils/ValidateUtils.js +1 -1
- package/dist/libs/crud-sharding/ROUTING_LOGIC.md +944 -0
- package/dist/libs/crud-sharding/ShardingConfig.d.ts +218 -0
- package/dist/libs/crud-sharding/ShardingConfig.js +32 -0
- package/dist/libs/crud-sharding/ShardingCountCache.d.ts +69 -0
- package/dist/libs/crud-sharding/ShardingCountCache.js +160 -0
- package/dist/libs/crud-sharding/ShardingCrudPro.d.ts +363 -0
- package/dist/libs/crud-sharding/ShardingCrudPro.js +699 -0
- package/dist/libs/crud-sharding/ShardingMerger.d.ts +130 -0
- package/dist/libs/crud-sharding/ShardingMerger.js +280 -0
- package/dist/libs/crud-sharding/ShardingRouter.d.ts +69 -0
- package/dist/libs/crud-sharding/ShardingRouter.js +377 -0
- package/dist/libs/crud-sharding/ShardingTableCreator.d.ts +146 -0
- package/dist/libs/crud-sharding/ShardingTableCreator.js +805 -0
- package/dist/libs/crud-sharding/ShardingUtils.d.ts +38 -0
- package/dist/libs/crud-sharding/ShardingUtils.js +77 -0
- package/dist/libs/crud-sharding/index.d.ts +45 -0
- package/dist/libs/crud-sharding/index.js +55 -0
- package/dist/models/StandardColumns.d.ts +71 -0
- package/dist/models/StandardColumns.js +28 -0
- package/dist/service/SysAppService.js +2 -2
- package/dist/service/SysConfigService.js +1 -1
- package/dist/service/SysDictDataService.js +2 -2
- package/dist/service/SysMenuService.js +1 -1
- package/dist/service/UserAccountService.d.ts +1 -1
- package/dist/service/crudstd/CrudStdService.d.ts +0 -1
- package/dist/service/crudstd/CrudStdService.js +0 -27
- package/dist/service/curd/CrudProQuick.d.ts +134 -4
- package/dist/service/curd/CrudProQuick.js +155 -3
- package/dist/service/curd/CurdMixService.d.ts +2 -1
- package/dist/service/curd/CurdMixService.js +5 -1
- package/dist/service/curd/CurdProService.d.ts +44 -2
- package/dist/service/curd/CurdProService.js +53 -1
- package/dist/service/curd/README.md +1001 -0
- package/dist/service/curd/fixSoftDelete.d.ts +14 -0
- package/dist/service/curd/fixSoftDelete.js +29 -11
- package/dist/service/flow/FlowConfigService.js +1 -1
- package/dist/service/flow/FlowInstanceCrudService.js +1 -1
- package/package.json +3 -1
- package/src/controller/gateway/AsyncTaskController.ts +1 -1
- package/src/controller/manage/CrudStandardDesignApi.ts +16 -100
- package/src/index.ts +3 -0
- package/src/libs/crud-pro/CrudPro.ts +19 -1
- package/src/libs/crud-pro/README.md +809 -0
- package/src/libs/crud-pro/README_FUNC.md +193 -0
- package/src/libs/crud-pro/exceptions.ts +2 -0
- package/src/libs/crud-pro/interfaces.ts +38 -1
- package/src/libs/crud-pro/models/ExecuteContext.ts +6 -3
- package/src/libs/crud-pro/models/RequestModel.ts +108 -44
- package/src/libs/crud-pro/models/ResModel.ts +10 -4
- package/src/libs/crud-pro/models/ServiceHub.ts +2 -0
- package/src/libs/crud-pro/models/keys.ts +5 -0
- package/src/libs/crud-pro/services/CrudProDataTypeConvertService.ts +171 -0
- package/src/libs/crud-pro/services/CrudProExecuteSqlService.ts +24 -1
- package/src/libs/crud-pro/services/CrudProFieldValidateService.ts +53 -1
- package/src/libs/crud-pro/services/CrudProGenSqlService.ts +51 -7
- package/src/libs/crud-pro/services/CrudProOriginToExecuteSql.ts +159 -2
- package/src/libs/crud-pro/services/CrudProTableMetaService.ts +139 -1
- package/src/libs/crud-pro/services/CurdProServiceHub.ts +16 -1
- package/src/libs/crud-pro/utils/DateTimeUtils.ts +3 -0
- package/src/libs/crud-pro/utils/MixinUtils.ts +97 -1
- package/src/libs/crud-pro/utils/ValidateUtils.ts +1 -1
- package/src/libs/crud-sharding/ROUTING_LOGIC.md +944 -0
- package/src/libs/crud-sharding/ShardingConfig.ts +240 -0
- package/src/libs/crud-sharding/ShardingCountCache.ts +200 -0
- package/src/libs/crud-sharding/ShardingCrudPro.ts +856 -0
- package/src/libs/crud-sharding/ShardingMerger.ts +382 -0
- package/src/libs/crud-sharding/ShardingRouter.ts +512 -0
- package/src/libs/crud-sharding/ShardingTableCreator.ts +1007 -0
- package/src/libs/crud-sharding/ShardingUtils.ts +84 -0
- package/src/libs/crud-sharding/index.ts +64 -0
- package/src/models/StandardColumns.ts +76 -0
- package/src/service/FileCenterService.ts +1 -1
- package/src/service/SysAppService.ts +2 -2
- package/src/service/SysConfigService.ts +1 -1
- package/src/service/SysDictDataService.ts +2 -2
- package/src/service/SysMenuService.ts +2 -2
- package/src/service/WorkbenchService.ts +1 -1
- package/src/service/anyapi/AnyApiService.ts +1 -1
- package/src/service/asyncTask/AsyncTaskRunnerService.ts +1 -1
- package/src/service/crudstd/CrudStdService.ts +0 -32
- package/src/service/curd/CrudProQuick.ts +164 -5
- package/src/service/curd/CurdMixService.ts +7 -2
- package/src/service/curd/CurdProService.ts +62 -3
- package/src/service/curd/README.md +1001 -0
- package/src/service/curd/fixCfgModel.ts +1 -2
- package/src/service/curd/fixSoftDelete.ts +38 -16
- package/src/service/flow/FlowConfigService.ts +1 -1
- package/src/service/flow/FlowInstanceCrudService.ts +1 -1
|
@@ -31,8 +31,6 @@ export declare class CrudStandardDesignApi extends BaseApiController {
|
|
|
31
31
|
* 获取功能点列表
|
|
32
32
|
*/
|
|
33
33
|
getFuncOptionsList(): Promise<import("../../libs/crud-pro/models/ExecuteContext").ExecuteContext>;
|
|
34
|
-
private getTableListOfSqlserver;
|
|
35
|
-
private getTableListOfPostgreSQL;
|
|
36
34
|
private getTableFieldsOfSqlServer;
|
|
37
35
|
private getTableFieldsOfPostgreSQL;
|
|
38
36
|
/**
|
|
@@ -54,31 +54,17 @@ let CrudStandardDesignApi = class CrudStandardDesignApi extends BaseApiControlle
|
|
|
54
54
|
async getTableList() {
|
|
55
55
|
const { databaseName } = this.ctx.request.body;
|
|
56
56
|
const { dbType, dbName } = (0, DatabaseName_1.parseDatabaseName)(databaseName);
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
});
|
|
69
|
-
const arr = JSON.parse(JSON.stringify(res));
|
|
70
|
-
const tableNames = arr.map(a => {
|
|
71
|
-
const v = Object.values(a);
|
|
72
|
-
const tableName = v[0];
|
|
73
|
-
return {
|
|
74
|
-
value: tableName,
|
|
75
|
-
label: tableName,
|
|
76
|
-
dbName,
|
|
77
|
-
dbType,
|
|
78
|
-
tableName,
|
|
79
|
-
};
|
|
80
|
-
});
|
|
81
|
-
return common_dto_1.CommonResult.successRes(tableNames);
|
|
57
|
+
// 使用 CrudProTableMetaService 获取所有表和视图信息(跳过缓存,强制刷新)
|
|
58
|
+
const { tables } = await this.curdMixService.getAllTableInfos({ sqlDatabase: dbName, sqlDbType: dbType }, { skipCache: true, refreshCache: true });
|
|
59
|
+
const result = tables.map(table => ({
|
|
60
|
+
value: table.name,
|
|
61
|
+
label: table.name,
|
|
62
|
+
dbName,
|
|
63
|
+
dbType,
|
|
64
|
+
tableName: table.name,
|
|
65
|
+
tableType: table.tableType,
|
|
66
|
+
}));
|
|
67
|
+
return common_dto_1.CommonResult.successRes(result);
|
|
82
68
|
}
|
|
83
69
|
async getTableFields() {
|
|
84
70
|
const { databaseName, tableName } = this.ctx.request.body;
|
|
@@ -138,66 +124,6 @@ let CrudStandardDesignApi = class CrudStandardDesignApi extends BaseApiControlle
|
|
|
138
124
|
async getFuncOptionsList() {
|
|
139
125
|
return this.executeSysSimpleSQL(SystemTables_1.SystemTables.sys_perm_func, keys_1.KeysOfSimpleSQL.SIMPLE_QUERY_PAGE);
|
|
140
126
|
}
|
|
141
|
-
async getTableListOfSqlserver(dbName) {
|
|
142
|
-
const dbConfig = this.sqlserver2Config[dbName];
|
|
143
|
-
if (!dbConfig) {
|
|
144
|
-
throw new exceptions_1.CommonException('DB_NOT_FOUND', '数据库配置没有找到:' + dbName);
|
|
145
|
-
}
|
|
146
|
-
const dbType = keys_1.SqlDbType.sqlserver;
|
|
147
|
-
const sql = 'SELECT name as tablename FROM sys.tables';
|
|
148
|
-
const arr = await this.curdMixService.executeSQL({
|
|
149
|
-
executeSql: sql,
|
|
150
|
-
sqlDatabase: dbName,
|
|
151
|
-
sqlDbType: dbType,
|
|
152
|
-
crudType: keys_1.KeyOfCrudTypes.SYS_QUERY,
|
|
153
|
-
executeSqlArgs: [],
|
|
154
|
-
});
|
|
155
|
-
const tableNames = arr.map(v => {
|
|
156
|
-
const tableName = v.tablename;
|
|
157
|
-
return {
|
|
158
|
-
value: tableName,
|
|
159
|
-
label: tableName,
|
|
160
|
-
dbName,
|
|
161
|
-
dbType,
|
|
162
|
-
tableName,
|
|
163
|
-
};
|
|
164
|
-
});
|
|
165
|
-
return common_dto_1.CommonResult.successRes(tableNames);
|
|
166
|
-
}
|
|
167
|
-
async getTableListOfPostgreSQL(dbName) {
|
|
168
|
-
const dbConfig = this.postgres2Config[dbName];
|
|
169
|
-
if (!dbConfig) {
|
|
170
|
-
throw new exceptions_1.CommonException('DB_NOT_FOUND', '数据库配置没有找到:' + dbName);
|
|
171
|
-
}
|
|
172
|
-
const dbType = keys_1.SqlDbType.postgres;
|
|
173
|
-
const schemaname = 'public';
|
|
174
|
-
const tableListSql = '' + 'SELECT tablename\n' + 'FROM pg_tables\n' + `WHERE schemaname = '${schemaname}' \n` + 'ORDER BY tablename;';
|
|
175
|
-
const viewListSql = '' + 'SELECT viewname as tablename\n' + 'FROM pg_views\n' + `WHERE schemaname = '${schemaname}' \n` + 'ORDER BY viewname;';
|
|
176
|
-
const toSelectOptions = async (executeSql, tableType) => {
|
|
177
|
-
const arr = await this.curdMixService.executeSQL({
|
|
178
|
-
executeSql: executeSql,
|
|
179
|
-
sqlDatabase: dbName,
|
|
180
|
-
sqlDbType: dbType,
|
|
181
|
-
crudType: keys_1.KeyOfCrudTypes.SYS_QUERY,
|
|
182
|
-
executeSqlArgs: [],
|
|
183
|
-
});
|
|
184
|
-
return arr.map(v => {
|
|
185
|
-
const tableName = v.tablename;
|
|
186
|
-
return {
|
|
187
|
-
value: tableName,
|
|
188
|
-
label: tableName,
|
|
189
|
-
dbName,
|
|
190
|
-
dbType,
|
|
191
|
-
tableName,
|
|
192
|
-
tableType,
|
|
193
|
-
};
|
|
194
|
-
});
|
|
195
|
-
};
|
|
196
|
-
const tableNames = await toSelectOptions(tableListSql, 'table');
|
|
197
|
-
const viewNames = await toSelectOptions(viewListSql, 'view');
|
|
198
|
-
const tableNameMerge = [...tableNames, ...viewNames];
|
|
199
|
-
return common_dto_1.CommonResult.successRes(tableNameMerge);
|
|
200
|
-
}
|
|
201
127
|
async getTableFieldsOfSqlServer(dbName, tableName) {
|
|
202
128
|
const dbConfig = this.sqlserver2Config[dbName];
|
|
203
129
|
if (!dbConfig) {
|
package/dist/index.d.ts
CHANGED
|
@@ -87,6 +87,7 @@ export * from './models/contextLogger';
|
|
|
87
87
|
export * from './models/devops';
|
|
88
88
|
export * from './models/SystemTables';
|
|
89
89
|
export * from './models/AsyncTaskModel';
|
|
90
|
+
export * from './models/StandardColumns';
|
|
90
91
|
export * from './schedule/index';
|
|
91
92
|
export * from './libs/utils/common-dto';
|
|
92
93
|
export * from './libs/utils/crypto-utils';
|
|
@@ -108,4 +109,5 @@ export * from './libs/crud-pro/models/ExecuteContextFunc';
|
|
|
108
109
|
export * from './libs/crud-pro/models/RequestCfgModel';
|
|
109
110
|
export * from './libs/crud-pro/models/SqlSegArg';
|
|
110
111
|
export * from './libs/crud-pro/models/ResModel';
|
|
112
|
+
export * from './libs/crud-sharding/index';
|
|
111
113
|
export * from './libs/global-config/global-config';
|
package/dist/index.js
CHANGED
|
@@ -105,6 +105,7 @@ __exportStar(require("./models/contextLogger"), exports);
|
|
|
105
105
|
__exportStar(require("./models/devops"), exports);
|
|
106
106
|
__exportStar(require("./models/SystemTables"), exports);
|
|
107
107
|
__exportStar(require("./models/AsyncTaskModel"), exports);
|
|
108
|
+
__exportStar(require("./models/StandardColumns"), exports);
|
|
108
109
|
__exportStar(require("./schedule/index"), exports);
|
|
109
110
|
__exportStar(require("./libs/utils/common-dto"), exports);
|
|
110
111
|
__exportStar(require("./libs/utils/crypto-utils"), exports);
|
|
@@ -126,4 +127,5 @@ __exportStar(require("./libs/crud-pro/models/ExecuteContextFunc"), exports);
|
|
|
126
127
|
__exportStar(require("./libs/crud-pro/models/RequestCfgModel"), exports);
|
|
127
128
|
__exportStar(require("./libs/crud-pro/models/SqlSegArg"), exports);
|
|
128
129
|
__exportStar(require("./libs/crud-pro/models/ResModel"), exports);
|
|
130
|
+
__exportStar(require("./libs/crud-sharding/index"), exports);
|
|
129
131
|
__exportStar(require("./libs/global-config/global-config"), exports);
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ICrudProCfg, ILogger, IRequestCfgModel, IRequestModel, ISqlCfgModel, IVisitor } from './interfaces';
|
|
1
|
+
import { ICrudProCfg, ILogger, IRequestCfgModel, IRequestModel, ISqlCfgModel, ITableListResult, ITableNamesOptions, ITableNamesQuery, IVisitor } from './interfaces';
|
|
2
2
|
import { ExecuteContext } from './models/ExecuteContext';
|
|
3
3
|
import { Transaction } from './models/Transaction';
|
|
4
4
|
import { IExecuteContextFunc } from './models/ExecuteContextFunc';
|
|
@@ -29,6 +29,7 @@ declare class CrudPro {
|
|
|
29
29
|
*/
|
|
30
30
|
executeCrudByCfg(reqJson: IRequestModel, cfgJson: IRequestCfgModel): Promise<ExecuteContext>;
|
|
31
31
|
getCachedCfgByMethod(method: string, isEnableCache: boolean): Promise<IRequestCfgModel>;
|
|
32
|
+
getAllTableInfos(query: ITableNamesQuery, options?: ITableNamesOptions): Promise<ITableListResult>;
|
|
32
33
|
/**
|
|
33
34
|
* 如果是 INSERT/UPDATE 操作(sqlSimpleName 模式),根据真实表结构过滤 reqModel.data 中的字段
|
|
34
35
|
* 避免传入不存在的字段导致 SQL 执行报错
|
|
@@ -43,6 +44,13 @@ declare class CrudPro {
|
|
|
43
44
|
* @returns 是否为 INSERT/UPDATE 类型
|
|
44
45
|
*/
|
|
45
46
|
private isSimpleInsertOrUpdateType;
|
|
47
|
+
/**
|
|
48
|
+
* 根据表结构字段类型,自动转换数据格式
|
|
49
|
+
* 例如:PostgreSQL 的 ARRAY 类型字段,需要将 JSON 数组转为 PG 数组字面量格式
|
|
50
|
+
* @param reqModel 请求模型
|
|
51
|
+
* @param cfgModel 配置模型
|
|
52
|
+
*/
|
|
53
|
+
private convertDataFieldTypeIfNeeded;
|
|
46
54
|
private executeSQLList;
|
|
47
55
|
private parseRunSqlException;
|
|
48
56
|
private afterExecuteSQLList;
|
|
@@ -89,7 +89,10 @@ class CrudPro {
|
|
|
89
89
|
exeCtx.setCfgModel(cfgModel);
|
|
90
90
|
// 如果是 sqlSimpleName模式的 update/insert,则需要将 reqJson.data 部分根据真实的表结构进行过滤
|
|
91
91
|
await this.filterDataByTableMetaIfNeeded(reqModel, cfgModel);
|
|
92
|
+
// 根据表结构字段类型,自动转换数据格式(如 PostgreSQL ARRAY 字段)
|
|
93
|
+
await this.convertDataFieldTypeIfNeeded(reqModel, cfgModel);
|
|
92
94
|
// 参数校验
|
|
95
|
+
this.serviceHub.validateDataType(cfgModel, reqModel);
|
|
93
96
|
this.serviceHub.validateByAllow(cfgModel, reqModel);
|
|
94
97
|
this.serviceHub.validateByReject(cfgModel, reqModel);
|
|
95
98
|
this.serviceHub.validateByCfg(cfgModel, reqModel);
|
|
@@ -118,6 +121,9 @@ class CrudPro {
|
|
|
118
121
|
async getCachedCfgByMethod(method, isEnableCache) {
|
|
119
122
|
return this.serviceHub.getCachedCfgByMethod(method, isEnableCache);
|
|
120
123
|
}
|
|
124
|
+
async getAllTableInfos(query, options) {
|
|
125
|
+
return this.serviceHub.getAllTableInfos(query, options);
|
|
126
|
+
}
|
|
121
127
|
/**
|
|
122
128
|
* 如果是 INSERT/UPDATE 操作(sqlSimpleName 模式),根据真实表结构过滤 reqModel.data 中的字段
|
|
123
129
|
* 避免传入不存在的字段导致 SQL 执行报错
|
|
@@ -176,6 +182,15 @@ class CrudPro {
|
|
|
176
182
|
];
|
|
177
183
|
return insertOrUpdateTypes.includes(sqlSimpleName);
|
|
178
184
|
}
|
|
185
|
+
/**
|
|
186
|
+
* 根据表结构字段类型,自动转换数据格式
|
|
187
|
+
* 例如:PostgreSQL 的 ARRAY 类型字段,需要将 JSON 数组转为 PG 数组字面量格式
|
|
188
|
+
* @param reqModel 请求模型
|
|
189
|
+
* @param cfgModel 配置模型
|
|
190
|
+
*/
|
|
191
|
+
async convertDataFieldTypeIfNeeded(reqModel, cfgModel) {
|
|
192
|
+
await this.serviceHub.convertDataTypeByTableMeta(reqModel, cfgModel);
|
|
193
|
+
}
|
|
179
194
|
async executeSQLList() {
|
|
180
195
|
try {
|
|
181
196
|
await this.serviceHub.executeSqlCfgModels();
|