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.
Files changed (126) hide show
  1. package/README.md +635 -352
  2. package/dist/controller/manage/CrudStandardDesignApi.d.ts +0 -2
  3. package/dist/controller/manage/CrudStandardDesignApi.js +11 -85
  4. package/dist/index.d.ts +2 -0
  5. package/dist/index.js +2 -0
  6. package/dist/libs/crud-pro/CrudPro.d.ts +9 -1
  7. package/dist/libs/crud-pro/CrudPro.js +15 -0
  8. package/dist/libs/crud-pro/README.md +809 -0
  9. package/dist/libs/crud-pro/README_FUNC.md +193 -0
  10. package/dist/libs/crud-pro/exceptions.d.ts +2 -0
  11. package/dist/libs/crud-pro/exceptions.js +2 -0
  12. package/dist/libs/crud-pro/interfaces.d.ts +34 -1
  13. package/dist/libs/crud-pro/models/ExecuteContext.d.ts +3 -3
  14. package/dist/libs/crud-pro/models/ExecuteContext.js +2 -0
  15. package/dist/libs/crud-pro/models/RequestModel.d.ts +41 -1
  16. package/dist/libs/crud-pro/models/RequestModel.js +103 -39
  17. package/dist/libs/crud-pro/models/ResModel.d.ts +6 -4
  18. package/dist/libs/crud-pro/models/ServiceHub.d.ts +1 -0
  19. package/dist/libs/crud-pro/models/keys.d.ts +6 -1
  20. package/dist/libs/crud-pro/models/keys.js +5 -0
  21. package/dist/libs/crud-pro/services/CrudProDataTypeConvertService.d.ts +52 -0
  22. package/dist/libs/crud-pro/services/CrudProDataTypeConvertService.js +158 -0
  23. package/dist/libs/crud-pro/services/CrudProExecuteSqlService.js +20 -1
  24. package/dist/libs/crud-pro/services/CrudProFieldValidateService.d.ts +7 -0
  25. package/dist/libs/crud-pro/services/CrudProFieldValidateService.js +32 -0
  26. package/dist/libs/crud-pro/services/CrudProGenSqlService.d.ts +13 -0
  27. package/dist/libs/crud-pro/services/CrudProGenSqlService.js +44 -7
  28. package/dist/libs/crud-pro/services/CrudProOriginToExecuteSql.d.ts +43 -0
  29. package/dist/libs/crud-pro/services/CrudProOriginToExecuteSql.js +132 -1
  30. package/dist/libs/crud-pro/services/CrudProTableMetaService.d.ts +15 -1
  31. package/dist/libs/crud-pro/services/CrudProTableMetaService.js +107 -0
  32. package/dist/libs/crud-pro/services/CurdProServiceHub.d.ts +5 -1
  33. package/dist/libs/crud-pro/services/CurdProServiceHub.js +11 -0
  34. package/dist/libs/crud-pro/utils/DateTimeUtils.d.ts +1 -0
  35. package/dist/libs/crud-pro/utils/DateTimeUtils.js +3 -0
  36. package/dist/libs/crud-pro/utils/MixinUtils.d.ts +32 -0
  37. package/dist/libs/crud-pro/utils/MixinUtils.js +85 -1
  38. package/dist/libs/crud-pro/utils/ValidateUtils.js +1 -1
  39. package/dist/libs/crud-sharding/ROUTING_LOGIC.md +944 -0
  40. package/dist/libs/crud-sharding/ShardingConfig.d.ts +218 -0
  41. package/dist/libs/crud-sharding/ShardingConfig.js +32 -0
  42. package/dist/libs/crud-sharding/ShardingCountCache.d.ts +69 -0
  43. package/dist/libs/crud-sharding/ShardingCountCache.js +160 -0
  44. package/dist/libs/crud-sharding/ShardingCrudPro.d.ts +363 -0
  45. package/dist/libs/crud-sharding/ShardingCrudPro.js +699 -0
  46. package/dist/libs/crud-sharding/ShardingMerger.d.ts +130 -0
  47. package/dist/libs/crud-sharding/ShardingMerger.js +280 -0
  48. package/dist/libs/crud-sharding/ShardingRouter.d.ts +69 -0
  49. package/dist/libs/crud-sharding/ShardingRouter.js +377 -0
  50. package/dist/libs/crud-sharding/ShardingTableCreator.d.ts +146 -0
  51. package/dist/libs/crud-sharding/ShardingTableCreator.js +805 -0
  52. package/dist/libs/crud-sharding/ShardingUtils.d.ts +38 -0
  53. package/dist/libs/crud-sharding/ShardingUtils.js +77 -0
  54. package/dist/libs/crud-sharding/index.d.ts +45 -0
  55. package/dist/libs/crud-sharding/index.js +55 -0
  56. package/dist/models/StandardColumns.d.ts +71 -0
  57. package/dist/models/StandardColumns.js +28 -0
  58. package/dist/service/SysAppService.js +2 -2
  59. package/dist/service/SysConfigService.js +1 -1
  60. package/dist/service/SysDictDataService.js +2 -2
  61. package/dist/service/SysMenuService.js +1 -1
  62. package/dist/service/UserAccountService.d.ts +1 -1
  63. package/dist/service/crudstd/CrudStdService.d.ts +0 -1
  64. package/dist/service/crudstd/CrudStdService.js +0 -27
  65. package/dist/service/curd/CrudProQuick.d.ts +134 -4
  66. package/dist/service/curd/CrudProQuick.js +155 -3
  67. package/dist/service/curd/CurdMixService.d.ts +2 -1
  68. package/dist/service/curd/CurdMixService.js +5 -1
  69. package/dist/service/curd/CurdProService.d.ts +44 -2
  70. package/dist/service/curd/CurdProService.js +53 -1
  71. package/dist/service/curd/README.md +1001 -0
  72. package/dist/service/curd/fixSoftDelete.d.ts +14 -0
  73. package/dist/service/curd/fixSoftDelete.js +29 -11
  74. package/dist/service/flow/FlowConfigService.js +1 -1
  75. package/dist/service/flow/FlowInstanceCrudService.js +1 -1
  76. package/package.json +3 -1
  77. package/src/controller/gateway/AsyncTaskController.ts +1 -1
  78. package/src/controller/manage/CrudStandardDesignApi.ts +16 -100
  79. package/src/index.ts +3 -0
  80. package/src/libs/crud-pro/CrudPro.ts +19 -1
  81. package/src/libs/crud-pro/README.md +809 -0
  82. package/src/libs/crud-pro/README_FUNC.md +193 -0
  83. package/src/libs/crud-pro/exceptions.ts +2 -0
  84. package/src/libs/crud-pro/interfaces.ts +38 -1
  85. package/src/libs/crud-pro/models/ExecuteContext.ts +6 -3
  86. package/src/libs/crud-pro/models/RequestModel.ts +108 -44
  87. package/src/libs/crud-pro/models/ResModel.ts +10 -4
  88. package/src/libs/crud-pro/models/ServiceHub.ts +2 -0
  89. package/src/libs/crud-pro/models/keys.ts +5 -0
  90. package/src/libs/crud-pro/services/CrudProDataTypeConvertService.ts +171 -0
  91. package/src/libs/crud-pro/services/CrudProExecuteSqlService.ts +24 -1
  92. package/src/libs/crud-pro/services/CrudProFieldValidateService.ts +53 -1
  93. package/src/libs/crud-pro/services/CrudProGenSqlService.ts +51 -7
  94. package/src/libs/crud-pro/services/CrudProOriginToExecuteSql.ts +159 -2
  95. package/src/libs/crud-pro/services/CrudProTableMetaService.ts +139 -1
  96. package/src/libs/crud-pro/services/CurdProServiceHub.ts +16 -1
  97. package/src/libs/crud-pro/utils/DateTimeUtils.ts +3 -0
  98. package/src/libs/crud-pro/utils/MixinUtils.ts +97 -1
  99. package/src/libs/crud-pro/utils/ValidateUtils.ts +1 -1
  100. package/src/libs/crud-sharding/ROUTING_LOGIC.md +944 -0
  101. package/src/libs/crud-sharding/ShardingConfig.ts +240 -0
  102. package/src/libs/crud-sharding/ShardingCountCache.ts +200 -0
  103. package/src/libs/crud-sharding/ShardingCrudPro.ts +856 -0
  104. package/src/libs/crud-sharding/ShardingMerger.ts +382 -0
  105. package/src/libs/crud-sharding/ShardingRouter.ts +512 -0
  106. package/src/libs/crud-sharding/ShardingTableCreator.ts +1007 -0
  107. package/src/libs/crud-sharding/ShardingUtils.ts +84 -0
  108. package/src/libs/crud-sharding/index.ts +64 -0
  109. package/src/models/StandardColumns.ts +76 -0
  110. package/src/service/FileCenterService.ts +1 -1
  111. package/src/service/SysAppService.ts +2 -2
  112. package/src/service/SysConfigService.ts +1 -1
  113. package/src/service/SysDictDataService.ts +2 -2
  114. package/src/service/SysMenuService.ts +2 -2
  115. package/src/service/WorkbenchService.ts +1 -1
  116. package/src/service/anyapi/AnyApiService.ts +1 -1
  117. package/src/service/asyncTask/AsyncTaskRunnerService.ts +1 -1
  118. package/src/service/crudstd/CrudStdService.ts +0 -32
  119. package/src/service/curd/CrudProQuick.ts +164 -5
  120. package/src/service/curd/CurdMixService.ts +7 -2
  121. package/src/service/curd/CurdProService.ts +62 -3
  122. package/src/service/curd/README.md +1001 -0
  123. package/src/service/curd/fixCfgModel.ts +1 -2
  124. package/src/service/curd/fixSoftDelete.ts +38 -16
  125. package/src/service/flow/FlowConfigService.ts +1 -1
  126. 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
- if (dbType === keys_1.SqlDbType.postgres) {
58
- return this.getTableListOfPostgreSQL(dbName);
59
- }
60
- if (dbType === keys_1.SqlDbType.sqlserver) {
61
- return this.getTableListOfSqlserver(dbName);
62
- }
63
- const res = await this.curdMixService.executeSQL({
64
- executeSql: 'SHOW TABLES',
65
- sqlDatabase: dbName,
66
- sqlDbType: keys_1.SqlDbType.mysql,
67
- crudType: keys_1.KeyOfCrudTypes.SYS_QUERY,
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();