midway-fatcms 0.0.5 → 0.0.7
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/.qoder/skills/midway-fatcms-crud/SKILL.md +375 -0
- package/.qoder/skills/midway-fatcms-crud/examples.md +990 -0
- package/.qoder/skills/midway-fatcms-crud/reference.md +568 -0
- package/README.md +377 -134
- 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 +6 -2
- package/dist/libs/crud-pro/models/RequestModel.js +20 -53
- 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/OrderByUtils.d.ts +70 -0
- package/dist/libs/crud-pro/utils/OrderByUtils.js +158 -0
- 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 +675 -0
- package/dist/libs/crud-sharding/ShardingMerger.d.ts +130 -0
- package/dist/libs/crud-sharding/ShardingMerger.js +282 -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 +1100 -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 +4 -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 +23 -65
- 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/OrderByUtils.ts +169 -0
- 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 +835 -0
- package/src/libs/crud-sharding/ShardingMerger.ts +384 -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 +1100 -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
|
@@ -2,5 +2,19 @@ import { KeysOfSimpleSQL } from "../../libs/crud-pro/models/keys";
|
|
|
2
2
|
import { IRequestModel } from "../../libs/crud-pro/interfaces";
|
|
3
3
|
import { IRequestCfgModel2 } from "../../models/bizmodels";
|
|
4
4
|
import { Context } from "@midwayjs/koa";
|
|
5
|
+
/**
|
|
6
|
+
* 软删除处理函数
|
|
7
|
+
*
|
|
8
|
+
* 当 cfgModel.enableSoftDelete === true 时,自动处理软删除逻辑:
|
|
9
|
+
*
|
|
10
|
+
* 1. INSERT 操作:自动设置 deleted_at = 0
|
|
11
|
+
* 2. DELETE 操作:转为 UPDATE,设置 deleted_at = 时间戳, deleted_by = 当前用户
|
|
12
|
+
* 3. QUERY 操作:自动添加 deleted_at = 0 条件
|
|
13
|
+
*
|
|
14
|
+
* @param oldSqlSimpleName 原始 SQL 类型
|
|
15
|
+
* @param cfgModel 配置模型
|
|
16
|
+
* @param params 请求参数(会被修改)
|
|
17
|
+
* @param ctx 请求上下文(用于获取当前用户信息)
|
|
18
|
+
*/
|
|
5
19
|
declare function fixSoftDelete(oldSqlSimpleName: KeysOfSimpleSQL, cfgModel: IRequestCfgModel2, params: IRequestModel, ctx?: Context): void;
|
|
6
20
|
export { fixSoftDelete, };
|
|
@@ -2,42 +2,60 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.fixSoftDelete = void 0;
|
|
4
4
|
const keys_1 = require("../../libs/crud-pro/models/keys");
|
|
5
|
+
/**
|
|
6
|
+
* 软删除处理函数
|
|
7
|
+
*
|
|
8
|
+
* 当 cfgModel.enableSoftDelete === true 时,自动处理软删除逻辑:
|
|
9
|
+
*
|
|
10
|
+
* 1. INSERT 操作:自动设置 deleted_at = 0
|
|
11
|
+
* 2. DELETE 操作:转为 UPDATE,设置 deleted_at = 时间戳, deleted_by = 当前用户
|
|
12
|
+
* 3. QUERY 操作:自动添加 deleted_at = 0 条件
|
|
13
|
+
*
|
|
14
|
+
* @param oldSqlSimpleName 原始 SQL 类型
|
|
15
|
+
* @param cfgModel 配置模型
|
|
16
|
+
* @param params 请求参数(会被修改)
|
|
17
|
+
* @param ctx 请求上下文(用于获取当前用户信息)
|
|
18
|
+
*/
|
|
5
19
|
function fixSoftDelete(oldSqlSimpleName, cfgModel, params, ctx) {
|
|
6
20
|
var _a;
|
|
7
|
-
//
|
|
21
|
+
// 没有开启软删除,不做处理,直接物理删除
|
|
8
22
|
if (cfgModel.enableSoftDelete !== true) {
|
|
9
23
|
return;
|
|
10
24
|
}
|
|
11
|
-
//
|
|
25
|
+
// INSERT 操作:刚插入的数据,肯定是未删除的
|
|
12
26
|
if (keys_1.KeysOfSimpleSQL.SIMPLE_INSERT === oldSqlSimpleName) {
|
|
13
27
|
if (!params.data) {
|
|
14
28
|
params.data = {};
|
|
15
29
|
}
|
|
16
|
-
params.data
|
|
30
|
+
const dataObj = params.data;
|
|
31
|
+
dataObj.deleted_at = 0;
|
|
17
32
|
}
|
|
18
|
-
//
|
|
19
|
-
// 标准软删除:deleted_at 字段为0
|
|
33
|
+
// DELETE 操作:如果是软删除,修改为 UPDATE 语句
|
|
34
|
+
// 标准软删除:deleted_at 字段为 0 代表未删除,有任意时间戳代表已删除
|
|
20
35
|
if (keys_1.KeysOfSimpleSQL.SIMPLE_DELETE === oldSqlSimpleName) {
|
|
21
36
|
if (!params.condition || Object.keys(params.condition).length === 0) {
|
|
22
37
|
throw new Error('执行删除操作,必须指定删除条件');
|
|
23
38
|
}
|
|
39
|
+
// 获取当前用户信息
|
|
40
|
+
const sessionInfo = (_a = ctx === null || ctx === void 0 ? void 0 : ctx.userSession) === null || _a === void 0 ? void 0 : _a.getSessionInfo();
|
|
41
|
+
// 在原有 data 对象上添加软删除字段
|
|
24
42
|
if (!params.data) {
|
|
25
43
|
params.data = {};
|
|
26
44
|
}
|
|
27
|
-
const
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
//
|
|
45
|
+
const dataObj = params.data;
|
|
46
|
+
dataObj.deleted_at = Date.now();
|
|
47
|
+
dataObj.deleted_by = (sessionInfo === null || sessionInfo === void 0 ? void 0 : sessionInfo.accountId) || '';
|
|
48
|
+
// 改为执行 UPDATE 操作
|
|
31
49
|
cfgModel.sqlSimpleName = keys_1.KeysOfSimpleSQL.SIMPLE_UPDATE;
|
|
32
50
|
}
|
|
33
|
-
//
|
|
51
|
+
// QUERY 操作:强制查询未删除的记录
|
|
34
52
|
if (keys_1.KeysOfSimpleSQL.SIMPLE_QUERY_ONE === oldSqlSimpleName
|
|
35
53
|
|| keys_1.KeysOfSimpleSQL.SIMPLE_QUERY === oldSqlSimpleName
|
|
36
54
|
|| keys_1.KeysOfSimpleSQL.SIMPLE_QUERY_PAGE === oldSqlSimpleName) {
|
|
37
55
|
if (!params.condition) {
|
|
38
56
|
params.condition = {};
|
|
39
57
|
}
|
|
40
|
-
params.condition.deleted_at = 0;
|
|
58
|
+
params.condition.deleted_at = 0;
|
|
41
59
|
}
|
|
42
60
|
}
|
|
43
61
|
exports.fixSoftDelete = fixSoftDelete;
|
|
@@ -47,7 +47,7 @@ exports.ParsedFlowConfig = ParsedFlowConfig;
|
|
|
47
47
|
let FlowConfigService = class FlowConfigService extends BaseService_1.BaseService {
|
|
48
48
|
get flow_config() {
|
|
49
49
|
const { SystemDbName, SystemDbType } = global_config_1.GLOBAL_STATIC_CONFIG.getConfig();
|
|
50
|
-
return this.curdProService.
|
|
50
|
+
return this.curdProService.getQuickCrud(SystemDbName, SystemDbType, FlowModel_1.FLOW_TABLES.flow_config);
|
|
51
51
|
}
|
|
52
52
|
toCacheKey(flow_code, flow_version) {
|
|
53
53
|
if (!flow_code || typeof flow_code !== 'string') {
|
|
@@ -23,7 +23,7 @@ exports.getCurrentDateTime = getCurrentDateTime;
|
|
|
23
23
|
let FlowInstanceCrudService = class FlowInstanceCrudService extends BaseService_1.BaseService {
|
|
24
24
|
get flowDB() {
|
|
25
25
|
const { FlowDbName, FlowDbType } = global_config_1.GLOBAL_STATIC_CONFIG.getConfig();
|
|
26
|
-
const util = this.curdProService.
|
|
26
|
+
const util = this.curdProService.getQuickCrud(FlowDbName, FlowDbType);
|
|
27
27
|
util.setBaseCfgModel({ maxLimit: 100000 });
|
|
28
28
|
return util;
|
|
29
29
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "midway-fatcms",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.7",
|
|
4
4
|
"description": "This is a midway component sample",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"typings": "index.d.ts",
|
|
@@ -22,12 +22,15 @@
|
|
|
22
22
|
"dist/**/*.d.ts",
|
|
23
23
|
"dist/**/*.html",
|
|
24
24
|
"dist/**/*.ico",
|
|
25
|
+
"dist/**/*.md",
|
|
25
26
|
"src/**/*.txt",
|
|
26
27
|
"src/**/*.js",
|
|
27
28
|
"src/**/*.ts",
|
|
28
29
|
"src/**/*.d.ts",
|
|
29
30
|
"src/**/*.html",
|
|
30
31
|
"src/**/*.ico",
|
|
32
|
+
"src/**/*.md",
|
|
33
|
+
".qoder/**/*.md",
|
|
31
34
|
"index.d.ts",
|
|
32
35
|
"tsconfig.json",
|
|
33
36
|
".prettierrc.js",
|
|
@@ -111,7 +111,7 @@ export class AsyncTaskController extends BaseApiController {
|
|
|
111
111
|
},
|
|
112
112
|
};
|
|
113
113
|
const res = await this.executeSysSimpleSQL(SystemTables.sys_async_tasks, KeysOfSimpleSQL.SIMPLE_QUERY_ONE);
|
|
114
|
-
const taskObj
|
|
114
|
+
const taskObj = res.getOneObj() as SysAsyncTaskEntity;
|
|
115
115
|
if (!taskObj) {
|
|
116
116
|
throw new CommonException('任务不存在');
|
|
117
117
|
}
|
|
@@ -62,34 +62,22 @@ export class CrudStandardDesignApi extends BaseApiController {
|
|
|
62
62
|
const { databaseName } = this.ctx.request.body as any;
|
|
63
63
|
const { dbType, dbName } = parseDatabaseName(databaseName);
|
|
64
64
|
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
});
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
const tableNames: string[] = arr.map(a => {
|
|
82
|
-
const v = Object.values(a);
|
|
83
|
-
const tableName = v[0];
|
|
84
|
-
return {
|
|
85
|
-
value: tableName,
|
|
86
|
-
label: tableName,
|
|
87
|
-
dbName,
|
|
88
|
-
dbType,
|
|
89
|
-
tableName,
|
|
90
|
-
};
|
|
91
|
-
});
|
|
92
|
-
return CommonResult.successRes(tableNames);
|
|
65
|
+
// 使用 CrudProTableMetaService 获取所有表和视图信息(跳过缓存,强制刷新)
|
|
66
|
+
const { tables } = await this.curdMixService.getAllTableInfos(
|
|
67
|
+
{ sqlDatabase: dbName, sqlDbType: dbType },
|
|
68
|
+
{ skipCache: true, refreshCache: true }
|
|
69
|
+
);
|
|
70
|
+
|
|
71
|
+
const result = tables.map(table => ({
|
|
72
|
+
value: table.name,
|
|
73
|
+
label: table.name,
|
|
74
|
+
dbName,
|
|
75
|
+
dbType,
|
|
76
|
+
tableName: table.name,
|
|
77
|
+
tableType: table.tableType,
|
|
78
|
+
}));
|
|
79
|
+
|
|
80
|
+
return CommonResult.successRes(result);
|
|
93
81
|
}
|
|
94
82
|
|
|
95
83
|
@Post('/getTableFields')
|
|
@@ -162,78 +150,6 @@ export class CrudStandardDesignApi extends BaseApiController {
|
|
|
162
150
|
return this.executeSysSimpleSQL(SystemTables.sys_perm_func, KeysOfSimpleSQL.SIMPLE_QUERY_PAGE);
|
|
163
151
|
}
|
|
164
152
|
|
|
165
|
-
private async getTableListOfSqlserver(dbName: string): Promise<CommonResult> {
|
|
166
|
-
const dbConfig = this.sqlserver2Config[dbName];
|
|
167
|
-
if (!dbConfig) {
|
|
168
|
-
throw new CommonException('DB_NOT_FOUND', '数据库配置没有找到:' + dbName);
|
|
169
|
-
}
|
|
170
|
-
|
|
171
|
-
const dbType = SqlDbType.sqlserver;
|
|
172
|
-
|
|
173
|
-
const sql = 'SELECT name as tablename FROM sys.tables';
|
|
174
|
-
const arr = await this.curdMixService.executeSQL({
|
|
175
|
-
executeSql: sql,
|
|
176
|
-
sqlDatabase: dbName,
|
|
177
|
-
sqlDbType: dbType,
|
|
178
|
-
crudType: KeyOfCrudTypes.SYS_QUERY,
|
|
179
|
-
executeSqlArgs: [],
|
|
180
|
-
});
|
|
181
|
-
|
|
182
|
-
const tableNames: string[] = arr.map(v => {
|
|
183
|
-
const tableName = v.tablename;
|
|
184
|
-
return {
|
|
185
|
-
value: tableName, //[dbName, dbType, tableName].join(SPLIT_CONST),
|
|
186
|
-
label: tableName,
|
|
187
|
-
dbName,
|
|
188
|
-
dbType,
|
|
189
|
-
tableName,
|
|
190
|
-
};
|
|
191
|
-
});
|
|
192
|
-
return CommonResult.successRes(tableNames);
|
|
193
|
-
}
|
|
194
|
-
|
|
195
|
-
private async getTableListOfPostgreSQL(dbName: string): Promise<CommonResult> {
|
|
196
|
-
const dbConfig = this.postgres2Config[dbName];
|
|
197
|
-
if (!dbConfig) {
|
|
198
|
-
throw new CommonException('DB_NOT_FOUND', '数据库配置没有找到:' + dbName);
|
|
199
|
-
}
|
|
200
|
-
|
|
201
|
-
const dbType = SqlDbType.postgres;
|
|
202
|
-
const schemaname = 'public';
|
|
203
|
-
|
|
204
|
-
const tableListSql = '' + 'SELECT tablename\n' + 'FROM pg_tables\n' + `WHERE schemaname = '${schemaname}' \n` + 'ORDER BY tablename;';
|
|
205
|
-
|
|
206
|
-
const viewListSql = '' + 'SELECT viewname as tablename\n' + 'FROM pg_views\n' + `WHERE schemaname = '${schemaname}' \n` + 'ORDER BY viewname;';
|
|
207
|
-
|
|
208
|
-
const toSelectOptions = async (executeSql: string, tableType: string) => {
|
|
209
|
-
const arr = await this.curdMixService.executeSQL({
|
|
210
|
-
executeSql: executeSql,
|
|
211
|
-
sqlDatabase: dbName,
|
|
212
|
-
sqlDbType: dbType,
|
|
213
|
-
crudType: KeyOfCrudTypes.SYS_QUERY,
|
|
214
|
-
executeSqlArgs: [],
|
|
215
|
-
});
|
|
216
|
-
return arr.map(v => {
|
|
217
|
-
const tableName = v.tablename;
|
|
218
|
-
return {
|
|
219
|
-
value: tableName, //[dbName, dbType, tableName].join(SPLIT_CONST),
|
|
220
|
-
label: tableName,
|
|
221
|
-
dbName,
|
|
222
|
-
dbType,
|
|
223
|
-
tableName,
|
|
224
|
-
tableType,
|
|
225
|
-
};
|
|
226
|
-
});
|
|
227
|
-
};
|
|
228
|
-
|
|
229
|
-
const tableNames: any[] = await toSelectOptions(tableListSql, 'table');
|
|
230
|
-
const viewNames: any[] = await toSelectOptions(viewListSql, 'view');
|
|
231
|
-
|
|
232
|
-
const tableNameMerge = [...tableNames, ...viewNames];
|
|
233
|
-
|
|
234
|
-
return CommonResult.successRes(tableNameMerge);
|
|
235
|
-
}
|
|
236
|
-
|
|
237
153
|
private async getTableFieldsOfSqlServer(dbName: string, tableName: string): Promise<CommonResult> {
|
|
238
154
|
const dbConfig = this.sqlserver2Config[dbName];
|
|
239
155
|
if (!dbConfig) {
|
package/src/index.ts
CHANGED
|
@@ -87,6 +87,8 @@ 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';
|
|
91
|
+
|
|
90
92
|
export * from './schedule/index';
|
|
91
93
|
|
|
92
94
|
export * from './libs/utils/common-dto';
|
|
@@ -111,5 +113,6 @@ export * from './libs/crud-pro/models/ExecuteContextFunc';
|
|
|
111
113
|
export * from './libs/crud-pro/models/RequestCfgModel';
|
|
112
114
|
export * from './libs/crud-pro/models/SqlSegArg';
|
|
113
115
|
export * from './libs/crud-pro/models/ResModel';
|
|
116
|
+
export * from './libs/crud-sharding/index';
|
|
114
117
|
|
|
115
118
|
export * from './libs/global-config/global-config';
|
|
@@ -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 { RequestModel } from './models/RequestModel';
|
|
4
4
|
import { CurdProServiceHub } from './services/CurdProServiceHub';
|
|
@@ -110,7 +110,11 @@ class CrudPro {
|
|
|
110
110
|
// 如果是 sqlSimpleName模式的 update/insert,则需要将 reqJson.data 部分根据真实的表结构进行过滤
|
|
111
111
|
await this.filterDataByTableMetaIfNeeded(reqModel, cfgModel);
|
|
112
112
|
|
|
113
|
+
// 根据表结构字段类型,自动转换数据格式(如 PostgreSQL ARRAY 字段)
|
|
114
|
+
await this.convertDataFieldTypeIfNeeded(reqModel, cfgModel);
|
|
115
|
+
|
|
113
116
|
// 参数校验
|
|
117
|
+
this.serviceHub.validateDataType(cfgModel, reqModel);
|
|
114
118
|
this.serviceHub.validateByAllow(cfgModel, reqModel);
|
|
115
119
|
this.serviceHub.validateByReject(cfgModel, reqModel);
|
|
116
120
|
this.serviceHub.validateByCfg(cfgModel, reqModel);
|
|
@@ -148,6 +152,10 @@ class CrudPro {
|
|
|
148
152
|
return this.serviceHub.getCachedCfgByMethod(method, isEnableCache);
|
|
149
153
|
}
|
|
150
154
|
|
|
155
|
+
public async getAllTableInfos(query: ITableNamesQuery, options?: ITableNamesOptions): Promise<ITableListResult> {
|
|
156
|
+
return this.serviceHub.getAllTableInfos(query, options);
|
|
157
|
+
}
|
|
158
|
+
|
|
151
159
|
/**
|
|
152
160
|
* 如果是 INSERT/UPDATE 操作(sqlSimpleName 模式),根据真实表结构过滤 reqModel.data 中的字段
|
|
153
161
|
* 避免传入不存在的字段导致 SQL 执行报错
|
|
@@ -215,6 +223,16 @@ class CrudPro {
|
|
|
215
223
|
return insertOrUpdateTypes.includes(sqlSimpleName as KeysOfSimpleSQL);
|
|
216
224
|
}
|
|
217
225
|
|
|
226
|
+
/**
|
|
227
|
+
* 根据表结构字段类型,自动转换数据格式
|
|
228
|
+
* 例如:PostgreSQL 的 ARRAY 类型字段,需要将 JSON 数组转为 PG 数组字面量格式
|
|
229
|
+
* @param reqModel 请求模型
|
|
230
|
+
* @param cfgModel 配置模型
|
|
231
|
+
*/
|
|
232
|
+
private async convertDataFieldTypeIfNeeded(reqModel: RequestModel, cfgModel: RequestCfgModel): Promise<void> {
|
|
233
|
+
await this.serviceHub.convertDataTypeByTableMeta(reqModel, cfgModel);
|
|
234
|
+
}
|
|
235
|
+
|
|
218
236
|
private async executeSQLList() {
|
|
219
237
|
try {
|
|
220
238
|
await this.serviceHub.executeSqlCfgModels();
|