midway-fatcms 0.0.3 → 0.0.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.
Files changed (391) hide show
  1. package/.eslintrc.json +14 -14
  2. package/.prettierrc.js +4 -4
  3. package/README.md +406 -406
  4. package/dist/config/config.default.d.ts +3 -3
  5. package/dist/config/config.default.js +177 -177
  6. package/dist/config/utils.d.ts +1 -1
  7. package/dist/config/utils.js +23 -23
  8. package/dist/configuration.d.ts +7 -7
  9. package/dist/configuration.js +113 -113
  10. package/dist/controller/base/BaseApiController.d.ts +49 -49
  11. package/dist/controller/base/BaseApiController.js +198 -198
  12. package/dist/controller/gateway/AnyApiGatewayController.d.ts +13 -13
  13. package/dist/controller/gateway/AnyApiGatewayController.js +55 -55
  14. package/dist/controller/gateway/AsyncTaskController.d.ts +20 -20
  15. package/dist/controller/gateway/AsyncTaskController.js +181 -181
  16. package/dist/controller/gateway/CrudMtdGatewayController.d.ts +21 -21
  17. package/dist/controller/gateway/CrudMtdGatewayController.js +122 -122
  18. package/dist/controller/gateway/CrudStdGatewayController.d.ts +39 -39
  19. package/dist/controller/gateway/CrudStdGatewayController.js +149 -149
  20. package/dist/controller/gateway/DocGatewayController.d.ts +27 -27
  21. package/dist/controller/gateway/DocGatewayController.js +181 -181
  22. package/dist/controller/gateway/FileController.d.ts +32 -32
  23. package/dist/controller/gateway/FileController.js +160 -160
  24. package/dist/controller/gateway/FlowInstanceController.d.ts +16 -16
  25. package/dist/controller/gateway/FlowInstanceController.js +48 -48
  26. package/dist/controller/gateway/ProxyApiGatewayController.d.ts +18 -18
  27. package/dist/controller/gateway/ProxyApiGatewayController.js +78 -78
  28. package/dist/controller/gateway/PublicApiController.d.ts +33 -33
  29. package/dist/controller/gateway/PublicApiController.js +194 -194
  30. package/dist/controller/gateway/StaticController.d.ts +23 -23
  31. package/dist/controller/gateway/StaticController.js +280 -280
  32. package/dist/controller/helpers.controller.d.ts +36 -36
  33. package/dist/controller/helpers.controller.js +187 -187
  34. package/dist/controller/home.controller.d.ts +9 -9
  35. package/dist/controller/home.controller.js +78 -78
  36. package/dist/controller/manage/AnyApiMangeApi.d.ts +10 -10
  37. package/dist/controller/manage/AnyApiMangeApi.js +98 -98
  38. package/dist/controller/manage/AppLogMangeApi.d.ts +10 -10
  39. package/dist/controller/manage/AppLogMangeApi.js +88 -88
  40. package/dist/controller/manage/AppMangeApi.d.ts +12 -12
  41. package/dist/controller/manage/AppMangeApi.js +101 -101
  42. package/dist/controller/manage/AppPageMangeApi.d.ts +10 -10
  43. package/dist/controller/manage/AppPageMangeApi.js +87 -87
  44. package/dist/controller/manage/AppSchemaHistoryApi.d.ts +10 -10
  45. package/dist/controller/manage/AppSchemaHistoryApi.js +83 -83
  46. package/dist/controller/manage/CrudMethodsMangeApi.d.ts +10 -10
  47. package/dist/controller/manage/CrudMethodsMangeApi.js +84 -84
  48. package/dist/controller/manage/CrudStandardDesignApi.d.ts +46 -46
  49. package/dist/controller/manage/CrudStandardDesignApi.js +367 -367
  50. package/dist/controller/manage/DataDictManageApi.d.ts +17 -17
  51. package/dist/controller/manage/DataDictManageApi.js +165 -165
  52. package/dist/controller/manage/DeployManageApi.d.ts +21 -21
  53. package/dist/controller/manage/DeployManageApi.js +203 -203
  54. package/dist/controller/manage/DocLibManageApi.d.ts +10 -10
  55. package/dist/controller/manage/DocLibManageApi.js +104 -104
  56. package/dist/controller/manage/DocManageApi.d.ts +11 -11
  57. package/dist/controller/manage/DocManageApi.js +130 -130
  58. package/dist/controller/manage/FileManageApi.d.ts +13 -13
  59. package/dist/controller/manage/FileManageApi.js +77 -77
  60. package/dist/controller/manage/FlowConfigManageApi.d.ts +12 -12
  61. package/dist/controller/manage/FlowConfigManageApi.js +109 -109
  62. package/dist/controller/manage/LowCodeTplManageApi.d.ts +13 -13
  63. package/dist/controller/manage/LowCodeTplManageApi.js +86 -86
  64. package/dist/controller/manage/MenuManageApi.d.ts +11 -11
  65. package/dist/controller/manage/MenuManageApi.js +104 -104
  66. package/dist/controller/manage/ProxyApiMangeApi.d.ts +10 -10
  67. package/dist/controller/manage/ProxyApiMangeApi.js +87 -87
  68. package/dist/controller/manage/SuperAdminManageApi.d.ts +24 -24
  69. package/dist/controller/manage/SuperAdminManageApi.js +153 -153
  70. package/dist/controller/manage/SysConfigMangeApi.d.ts +12 -12
  71. package/dist/controller/manage/SysConfigMangeApi.js +133 -133
  72. package/dist/controller/manage/SystemInfoManageApi.d.ts +12 -12
  73. package/dist/controller/manage/SystemInfoManageApi.js +82 -82
  74. package/dist/controller/manage/UserAccountManageApi.d.ts +16 -16
  75. package/dist/controller/manage/UserAccountManageApi.js +153 -153
  76. package/dist/controller/manage/WorkbenchMangeApi.d.ts +11 -11
  77. package/dist/controller/manage/WorkbenchMangeApi.js +106 -106
  78. package/dist/controller/myinfo/AuthController.d.ts +37 -37
  79. package/dist/controller/myinfo/AuthController.js +157 -157
  80. package/dist/controller/myinfo/MyInfoController.d.ts +13 -13
  81. package/dist/controller/myinfo/MyInfoController.js +51 -51
  82. package/dist/controller/render/AppRenderController.d.ts +12 -12
  83. package/dist/controller/render/AppRenderController.js +93 -93
  84. package/dist/controller/test.controller.d.ts +8 -8
  85. package/dist/controller/test.controller.js +51 -51
  86. package/dist/filter/default.filter.d.ts +7 -7
  87. package/dist/filter/default.filter.js +23 -23
  88. package/dist/filter/notfound.filter.d.ts +5 -5
  89. package/dist/filter/notfound.filter.js +20 -20
  90. package/dist/index.d.ts +111 -111
  91. package/dist/index.js +129 -129
  92. package/dist/interface.d.ts +30 -30
  93. package/dist/interface.js +3 -3
  94. package/dist/libs/crud-pro/CrudPro.d.ts +51 -37
  95. package/dist/libs/crud-pro/CrudPro.js +207 -146
  96. package/dist/libs/crud-pro/defaultConfigs.d.ts +4 -4
  97. package/dist/libs/crud-pro/defaultConfigs.js +15 -15
  98. package/dist/libs/crud-pro/exceptions.d.ts +106 -106
  99. package/dist/libs/crud-pro/exceptions.js +119 -119
  100. package/dist/libs/crud-pro/interfaces.d.ts +195 -175
  101. package/dist/libs/crud-pro/interfaces.js +12 -12
  102. package/dist/libs/crud-pro/models/ExecuteContext.d.ts +50 -50
  103. package/dist/libs/crud-pro/models/ExecuteContext.js +87 -87
  104. package/dist/libs/crud-pro/models/ExecuteContextFunc.d.ts +38 -38
  105. package/dist/libs/crud-pro/models/ExecuteContextFunc.js +72 -72
  106. package/dist/libs/crud-pro/models/FuncContext.d.ts +18 -18
  107. package/dist/libs/crud-pro/models/FuncContext.js +6 -6
  108. package/dist/libs/crud-pro/models/RequestCfgModel.d.ts +65 -65
  109. package/dist/libs/crud-pro/models/RequestCfgModel.js +81 -81
  110. package/dist/libs/crud-pro/models/RequestModel.d.ts +25 -25
  111. package/dist/libs/crud-pro/models/RequestModel.js +113 -113
  112. package/dist/libs/crud-pro/models/ResModel.d.ts +20 -20
  113. package/dist/libs/crud-pro/models/ResModel.js +2 -2
  114. package/dist/libs/crud-pro/models/ServiceHub.d.ts +20 -20
  115. package/dist/libs/crud-pro/models/ServiceHub.js +2 -2
  116. package/dist/libs/crud-pro/models/SqlCfgModel.d.ts +23 -23
  117. package/dist/libs/crud-pro/models/SqlCfgModel.js +40 -40
  118. package/dist/libs/crud-pro/models/SqlSegArg.d.ts +6 -6
  119. package/dist/libs/crud-pro/models/SqlSegArg.js +12 -12
  120. package/dist/libs/crud-pro/models/Transaction.d.ts +50 -50
  121. package/dist/libs/crud-pro/models/Transaction.js +184 -184
  122. package/dist/libs/crud-pro/models/TransactionMySQL.d.ts +19 -19
  123. package/dist/libs/crud-pro/models/TransactionMySQL.js +48 -48
  124. package/dist/libs/crud-pro/models/TransactionPostgres.d.ts +19 -19
  125. package/dist/libs/crud-pro/models/TransactionPostgres.js +64 -64
  126. package/dist/libs/crud-pro/models/TransactionSqlServer.d.ts +9 -9
  127. package/dist/libs/crud-pro/models/TransactionSqlServer.js +61 -61
  128. package/dist/libs/crud-pro/models/keys.d.ts +111 -111
  129. package/dist/libs/crud-pro/models/keys.js +156 -156
  130. package/dist/libs/crud-pro/services/CrudProCachedCfgService.d.ts +11 -11
  131. package/dist/libs/crud-pro/services/CrudProCachedCfgService.js +73 -73
  132. package/dist/libs/crud-pro/services/CrudProDataFilterService.d.ts +17 -0
  133. package/dist/libs/crud-pro/services/CrudProDataFilterService.js +53 -0
  134. package/dist/libs/crud-pro/services/CrudProExecuteFuncService.d.ts +9 -9
  135. package/dist/libs/crud-pro/services/CrudProExecuteFuncService.js +125 -125
  136. package/dist/libs/crud-pro/services/CrudProExecuteSqlService.d.ts +17 -17
  137. package/dist/libs/crud-pro/services/CrudProExecuteSqlService.js +224 -224
  138. package/dist/libs/crud-pro/services/CrudProFieldUpdateService.d.ts +9 -9
  139. package/dist/libs/crud-pro/services/CrudProFieldUpdateService.js +51 -51
  140. package/dist/libs/crud-pro/services/CrudProFieldValidateService.d.ts +13 -13
  141. package/dist/libs/crud-pro/services/CrudProFieldValidateService.js +148 -148
  142. package/dist/libs/crud-pro/services/CrudProGenSqlCondition.d.ts +25 -25
  143. package/dist/libs/crud-pro/services/CrudProGenSqlCondition.js +385 -385
  144. package/dist/libs/crud-pro/services/CrudProGenSqlService.d.ts +25 -25
  145. package/dist/libs/crud-pro/services/CrudProGenSqlService.js +165 -165
  146. package/dist/libs/crud-pro/services/CrudProOriginToExecuteSql.d.ts +32 -32
  147. package/dist/libs/crud-pro/services/CrudProOriginToExecuteSql.js +345 -339
  148. package/dist/libs/crud-pro/services/CrudProServiceBase.d.ts +24 -24
  149. package/dist/libs/crud-pro/services/CrudProServiceBase.js +88 -88
  150. package/dist/libs/crud-pro/services/CrudProTableMetaService.d.ts +12 -9
  151. package/dist/libs/crud-pro/services/CrudProTableMetaService.js +167 -77
  152. package/dist/libs/crud-pro/services/CurdProServiceHub.d.ts +34 -32
  153. package/dist/libs/crud-pro/services/CurdProServiceHub.js +69 -64
  154. package/dist/libs/crud-pro/utils/CompareUtils.d.ts +9 -9
  155. package/dist/libs/crud-pro/utils/CompareUtils.js +25 -25
  156. package/dist/libs/crud-pro/utils/CrudMonitor.d.ts +9 -9
  157. package/dist/libs/crud-pro/utils/CrudMonitor.js +12 -12
  158. package/dist/libs/crud-pro/utils/DatabaseName.d.ts +9 -9
  159. package/dist/libs/crud-pro/utils/DatabaseName.js +50 -50
  160. package/dist/libs/crud-pro/utils/DateTimeUtils.d.ts +7 -7
  161. package/dist/libs/crud-pro/utils/DateTimeUtils.js +21 -21
  162. package/dist/libs/crud-pro/utils/MemoryRefreshCache.d.ts +19 -19
  163. package/dist/libs/crud-pro/utils/MemoryRefreshCache.js +47 -47
  164. package/dist/libs/crud-pro/utils/MessageParseUtils.d.ts +5 -5
  165. package/dist/libs/crud-pro/utils/MessageParseUtils.js +33 -33
  166. package/dist/libs/crud-pro/utils/MixinUtils.d.ts +40 -40
  167. package/dist/libs/crud-pro/utils/MixinUtils.js +259 -259
  168. package/dist/libs/crud-pro/utils/ModelUtils.d.ts +11 -11
  169. package/dist/libs/crud-pro/utils/ModelUtils.js +54 -54
  170. package/dist/libs/crud-pro/utils/MultiKeyMap.d.ts +11 -11
  171. package/dist/libs/crud-pro/utils/MultiKeyMap.js +63 -63
  172. package/dist/libs/crud-pro/utils/SqlFuncUtils.d.ts +5 -5
  173. package/dist/libs/crud-pro/utils/SqlFuncUtils.js +29 -29
  174. package/dist/libs/crud-pro/utils/TypeUtils.d.ts +40 -40
  175. package/dist/libs/crud-pro/utils/TypeUtils.js +166 -166
  176. package/dist/libs/crud-pro/utils/ValidateUtils.d.ts +3 -3
  177. package/dist/libs/crud-pro/utils/ValidateUtils.js +165 -165
  178. package/dist/libs/crud-pro/utils/pool/MySQLUtils.d.ts +3 -3
  179. package/dist/libs/crud-pro/utils/pool/MySQLUtils.js +19 -19
  180. package/dist/libs/crud-pro/utils/pool/PostgresUtils.d.ts +3 -3
  181. package/dist/libs/crud-pro/utils/pool/PostgresUtils.js +20 -20
  182. package/dist/libs/crud-pro/utils/pool/SqlServerUtils.d.ts +3 -3
  183. package/dist/libs/crud-pro/utils/pool/SqlServerUtils.js +20 -20
  184. package/dist/libs/crud-pro/utils/sqlConvert/convertColumnName.d.ts +4 -4
  185. package/dist/libs/crud-pro/utils/sqlConvert/convertColumnName.js +35 -35
  186. package/dist/libs/crud-pro/utils/sqlConvert/convertMix.js +24 -24
  187. package/dist/libs/crud-pro/utils/sqlConvert/convertMsSql.d.ts +2 -2
  188. package/dist/libs/crud-pro/utils/sqlConvert/convertMsSql.js +14 -14
  189. package/dist/libs/crud-pro/utils/sqlConvert/convertPgSql.d.ts +2 -2
  190. package/dist/libs/crud-pro/utils/sqlConvert/convertPgSql.js +14 -14
  191. package/dist/libs/global-config/global-config.d.ts +71 -71
  192. package/dist/libs/global-config/global-config.js +38 -38
  193. package/dist/libs/utils/AsymmetricCrypto.d.ts +76 -76
  194. package/dist/libs/utils/AsymmetricCrypto.js +261 -261
  195. package/dist/libs/utils/base64.d.ts +9 -9
  196. package/dist/libs/utils/base64.js +42 -42
  197. package/dist/libs/utils/common-dto.d.ts +18 -18
  198. package/dist/libs/utils/common-dto.js +40 -40
  199. package/dist/libs/utils/crypto-utils.d.ts +3 -3
  200. package/dist/libs/utils/crypto-utils.js +55 -55
  201. package/dist/libs/utils/errorToString.d.ts +20 -20
  202. package/dist/libs/utils/errorToString.js +79 -79
  203. package/dist/libs/utils/fatcms-request.d.ts +45 -45
  204. package/dist/libs/utils/fatcms-request.js +161 -161
  205. package/dist/libs/utils/format-url.d.ts +17 -17
  206. package/dist/libs/utils/format-url.js +30 -30
  207. package/dist/libs/utils/functions.d.ts +11 -11
  208. package/dist/libs/utils/functions.js +99 -99
  209. package/dist/libs/utils/ordernum-utils.d.ts +22 -22
  210. package/dist/libs/utils/ordernum-utils.js +35 -35
  211. package/dist/libs/utils/parseConfig.d.ts +8 -8
  212. package/dist/libs/utils/parseConfig.js +47 -47
  213. package/dist/libs/utils/parseCreateSql.d.ts +10 -10
  214. package/dist/libs/utils/parseCreateSql.js +87 -87
  215. package/dist/libs/utils/render-utils.d.ts +40 -40
  216. package/dist/libs/utils/render-utils.js +158 -158
  217. package/dist/middleware/forbidden.middleware.d.ts +74 -74
  218. package/dist/middleware/forbidden.middleware.js +318 -318
  219. package/dist/middleware/global.middleware.d.ts +40 -40
  220. package/dist/middleware/global.middleware.js +310 -310
  221. package/dist/middleware/permission.middleware.d.ts +88 -88
  222. package/dist/middleware/permission.middleware.js +145 -145
  223. package/dist/middleware/rediscache.middleware.d.ts +28 -28
  224. package/dist/middleware/rediscache.middleware.js +114 -114
  225. package/dist/middleware/redislock.middleware.d.ts +29 -29
  226. package/dist/middleware/redislock.middleware.js +106 -106
  227. package/dist/middleware/tx.middleware.d.ts +55 -55
  228. package/dist/middleware/tx.middleware.js +83 -83
  229. package/dist/models/AsyncTaskModel.d.ts +74 -74
  230. package/dist/models/AsyncTaskModel.js +31 -31
  231. package/dist/models/FlowModel.d.ts +227 -227
  232. package/dist/models/FlowModel.js +53 -53
  233. package/dist/models/RedisKeys.d.ts +15 -15
  234. package/dist/models/RedisKeys.js +18 -18
  235. package/dist/models/SystemEntities.d.ts +118 -118
  236. package/dist/models/SystemEntities.js +18 -18
  237. package/dist/models/SystemPerm.d.ts +96 -96
  238. package/dist/models/SystemPerm.js +101 -101
  239. package/dist/models/SystemTables.d.ts +25 -25
  240. package/dist/models/SystemTables.js +28 -28
  241. package/dist/models/WorkbenchInfoTools.d.ts +7 -7
  242. package/dist/models/WorkbenchInfoTools.js +20 -20
  243. package/dist/models/bizmodels.d.ts +150 -150
  244. package/dist/models/bizmodels.js +62 -62
  245. package/dist/models/contextLogger.d.ts +27 -27
  246. package/dist/models/contextLogger.js +119 -119
  247. package/dist/models/devops.d.ts +12 -12
  248. package/dist/models/devops.js +19 -19
  249. package/dist/models/userSession.d.ts +67 -67
  250. package/dist/models/userSession.js +179 -179
  251. package/dist/schedule/anonymousContext.d.ts +15 -15
  252. package/dist/schedule/anonymousContext.js +74 -74
  253. package/dist/schedule/index.d.ts +4 -4
  254. package/dist/schedule/index.js +10 -10
  255. package/dist/schedule/runSchedule.d.ts +12 -12
  256. package/dist/schedule/runSchedule.js +68 -68
  257. package/dist/schedule/scheduleNames.d.ts +15 -15
  258. package/dist/schedule/scheduleNames.js +19 -19
  259. package/dist/service/AuthService.d.ts +56 -56
  260. package/dist/service/AuthService.js +251 -251
  261. package/dist/service/EnumInfoService.d.ts +30 -30
  262. package/dist/service/EnumInfoService.js +97 -97
  263. package/dist/service/FileCenterService.d.ts +64 -64
  264. package/dist/service/FileCenterService.js +422 -422
  265. package/dist/service/SysAppService.d.ts +15 -15
  266. package/dist/service/SysAppService.js +108 -108
  267. package/dist/service/SysConfigService.d.ts +10 -10
  268. package/dist/service/SysConfigService.js +64 -64
  269. package/dist/service/SysDictDataService.d.ts +9 -9
  270. package/dist/service/SysDictDataService.js +72 -72
  271. package/dist/service/SysMenuService.d.ts +51 -51
  272. package/dist/service/SysMenuService.js +58 -58
  273. package/dist/service/UserAccountService.d.ts +23 -23
  274. package/dist/service/UserAccountService.js +107 -107
  275. package/dist/service/UserSessionService.d.ts +43 -43
  276. package/dist/service/UserSessionService.js +163 -163
  277. package/dist/service/VisitStatService.d.ts +14 -14
  278. package/dist/service/VisitStatService.js +161 -161
  279. package/dist/service/WorkbenchService.d.ts +59 -59
  280. package/dist/service/WorkbenchService.js +249 -249
  281. package/dist/service/anyapi/AnyApiSandboxService.d.ts +15 -15
  282. package/dist/service/anyapi/AnyApiSandboxService.js +110 -110
  283. package/dist/service/anyapi/AnyApiService.d.ts +27 -27
  284. package/dist/service/anyapi/AnyApiService.js +181 -181
  285. package/dist/service/asyncTask/AsyncTaskRunnerService.d.ts +50 -50
  286. package/dist/service/asyncTask/AsyncTaskRunnerService.js +287 -287
  287. package/dist/service/asyncTask/AsyncTaskService.d.ts +7 -7
  288. package/dist/service/asyncTask/AsyncTaskService.js +34 -34
  289. package/dist/service/asyncTask/handler/ExcelInfoModel.d.ts +10 -10
  290. package/dist/service/asyncTask/handler/ExcelInfoModel.js +2 -2
  291. package/dist/service/asyncTask/handler/ExportExcelAsyncTaskHandler.d.ts +7 -7
  292. package/dist/service/asyncTask/handler/ExportExcelAsyncTaskHandler.js +216 -216
  293. package/dist/service/asyncTask/handler/ExportExcelByInnerHttpHandler.d.ts +36 -36
  294. package/dist/service/asyncTask/handler/ExportExcelByInnerHttpHandler.js +141 -141
  295. package/dist/service/asyncTask/handler/ExportExcelByStdCrudHandler.d.ts +46 -46
  296. package/dist/service/asyncTask/handler/ExportExcelByStdCrudHandler.js +135 -135
  297. package/dist/service/base/ApiBaseService.d.ts +22 -22
  298. package/dist/service/base/ApiBaseService.js +60 -60
  299. package/dist/service/base/ApiRateLimiter.d.ts +10 -10
  300. package/dist/service/base/ApiRateLimiter.js +51 -51
  301. package/dist/service/base/BaseService.d.ts +46 -46
  302. package/dist/service/base/BaseService.js +131 -131
  303. package/dist/service/base/cache/CacheServiceFactory.d.ts +26 -26
  304. package/dist/service/base/cache/CacheServiceFactory.js +122 -122
  305. package/dist/service/base/cache/CtxCache.d.ts +18 -18
  306. package/dist/service/base/cache/CtxCache.js +37 -37
  307. package/dist/service/base/cache/DiskCache.d.ts +19 -19
  308. package/dist/service/base/cache/DiskCache.js +81 -81
  309. package/dist/service/base/cache/MemoryCache.d.ts +12 -12
  310. package/dist/service/base/cache/MemoryCache.js +58 -58
  311. package/dist/service/base/cache/NoneCache.d.ts +10 -10
  312. package/dist/service/base/cache/NoneCache.js +19 -19
  313. package/dist/service/base/cache/RedisCache.d.ts +14 -14
  314. package/dist/service/base/cache/RedisCache.js +31 -31
  315. package/dist/service/crudstd/CrudStdActionService.d.ts +17 -17
  316. package/dist/service/crudstd/CrudStdActionService.js +32 -32
  317. package/dist/service/crudstd/CrudStdConstant.d.ts +58 -58
  318. package/dist/service/crudstd/CrudStdConstant.js +64 -64
  319. package/dist/service/crudstd/CrudStdRelationService.d.ts +11 -11
  320. package/dist/service/crudstd/CrudStdRelationService.js +179 -179
  321. package/dist/service/crudstd/CrudStdService.d.ts +59 -59
  322. package/dist/service/crudstd/CrudStdService.js +348 -348
  323. package/dist/service/curd/CrudProQuick.d.ts +60 -60
  324. package/dist/service/curd/CrudProQuick.js +167 -167
  325. package/dist/service/curd/CurdMixByAccountService.d.ts +14 -14
  326. package/dist/service/curd/CurdMixByAccountService.js +166 -166
  327. package/dist/service/curd/CurdMixByDictService.d.ts +12 -12
  328. package/dist/service/curd/CurdMixByDictService.js +114 -114
  329. package/dist/service/curd/CurdMixByLinkToCustomService.d.ts +30 -30
  330. package/dist/service/curd/CurdMixByLinkToCustomService.js +209 -209
  331. package/dist/service/curd/CurdMixBySysConfigService.d.ts +13 -13
  332. package/dist/service/curd/CurdMixBySysConfigService.js +116 -116
  333. package/dist/service/curd/CurdMixByWorkbenchService.d.ts +11 -11
  334. package/dist/service/curd/CurdMixByWorkbenchService.js +80 -80
  335. package/dist/service/curd/CurdMixService.d.ts +28 -28
  336. package/dist/service/curd/CurdMixService.js +100 -100
  337. package/dist/service/curd/CurdMixUtils.d.ts +57 -57
  338. package/dist/service/curd/CurdMixUtils.js +331 -331
  339. package/dist/service/curd/CurdProService.d.ts +32 -32
  340. package/dist/service/curd/CurdProService.js +215 -215
  341. package/dist/service/curd/fixCfgModel.d.ts +3 -3
  342. package/dist/service/curd/fixCfgModel.js +104 -104
  343. package/dist/service/curd/fixSoftDelete.d.ts +6 -6
  344. package/dist/service/curd/fixSoftDelete.js +43 -43
  345. package/dist/service/flow/FlowConfigService.d.ts +41 -41
  346. package/dist/service/flow/FlowConfigService.js +95 -95
  347. package/dist/service/flow/FlowInstanceCrudService.d.ts +35 -35
  348. package/dist/service/flow/FlowInstanceCrudService.js +257 -257
  349. package/dist/service/flow/FlowInstanceService.d.ts +88 -88
  350. package/dist/service/flow/FlowInstanceService.js +451 -451
  351. package/dist/service/proxyapi/ProxyApiLoadService.d.ts +21 -21
  352. package/dist/service/proxyapi/ProxyApiLoadService.js +167 -167
  353. package/dist/service/proxyapi/ProxyApiService.d.ts +61 -61
  354. package/dist/service/proxyapi/ProxyApiService.js +317 -317
  355. package/dist/service/proxyapi/ProxyApiUtils.d.ts +15 -15
  356. package/dist/service/proxyapi/ProxyApiUtils.js +34 -34
  357. package/dist/service/proxyapi/RouteHandler.d.ts +6 -6
  358. package/dist/service/proxyapi/RouteHandler.js +9 -9
  359. package/dist/service/proxyapi/RouteTrie.d.ts +12 -12
  360. package/dist/service/proxyapi/RouteTrie.js +64 -64
  361. package/dist/service/proxyapi/WeightedRandom.d.ts +9 -9
  362. package/dist/service/proxyapi/WeightedRandom.js +31 -31
  363. package/dist/service/proxyapi/WeightedRoundRobin.d.ts +8 -8
  364. package/dist/service/proxyapi/WeightedRoundRobin.js +33 -33
  365. package/index.d.ts +10 -10
  366. package/package.json +87 -87
  367. package/src/libs/crud-pro/CrudPro.ts +71 -0
  368. package/src/libs/crud-pro/interfaces.ts +22 -0
  369. package/src/libs/crud-pro/models/ServiceHub.ts +2 -2
  370. package/src/libs/crud-pro/services/CrudProDataFilterService.ts +58 -0
  371. package/src/libs/crud-pro/services/CrudProOriginToExecuteSql.ts +10 -1
  372. package/src/libs/crud-pro/services/CrudProTableMetaService.ts +145 -40
  373. package/src/libs/crud-pro/services/CurdProServiceHub.ts +10 -3
  374. package/src/libs/crud-pro/utils/CrudMonitor.ts +13 -13
  375. package/src/libs/utils/AsymmetricCrypto.ts +307 -307
  376. package/src/libs/utils/format-url.ts +29 -29
  377. package/src/libs/utils/render-utils.ts +223 -223
  378. package/src/models/WorkbenchInfoTools.ts +19 -19
  379. package/src/service/SysAppService.ts +103 -103
  380. package/src/service/SysDictDataService.ts +63 -63
  381. package/src/service/SysMenuService.ts +87 -87
  382. package/src/service/WorkbenchService.ts +279 -279
  383. package/src/service/base/cache/CacheServiceFactory.ts +135 -135
  384. package/src/service/base/cache/CtxCache.ts +45 -45
  385. package/src/service/base/cache/DiskCache.ts +90 -90
  386. package/src/service/base/cache/MemoryCache.ts +68 -68
  387. package/src/service/base/cache/NoneCache.ts +24 -24
  388. package/src/service/base/cache/RedisCache.ts +41 -41
  389. package/src/service/curd/CurdMixByAccountService.ts +177 -177
  390. package/src/service/curd/fixSoftDelete.ts +58 -58
  391. package/tsconfig.json +32 -32
@@ -7,6 +7,7 @@ import { RequestCfgModel } from './models/RequestCfgModel';
7
7
  import { MixinUtils } from './utils/MixinUtils';
8
8
  import { Transaction } from './models/Transaction';
9
9
  import { IExecuteContextFunc } from './models/ExecuteContextFunc';
10
+ import { KeysOfSimpleSQL } from './models/keys';
10
11
 
11
12
  class CrudPro {
12
13
  private readonly executeContext: ExecuteContext;
@@ -106,6 +107,9 @@ class CrudPro {
106
107
  exeCtx.setReqModel(reqModel);
107
108
  exeCtx.setCfgModel(cfgModel);
108
109
 
110
+ // 如果是 sqlSimpleName模式的 update/insert,则需要将 reqJson.data 部分根据真实的表结构进行过滤
111
+ await this.filterDataByTableMetaIfNeeded(reqModel, cfgModel);
112
+
109
113
  // 参数校验
110
114
  this.serviceHub.validateByAllow(cfgModel, reqModel);
111
115
  this.serviceHub.validateByReject(cfgModel, reqModel);
@@ -144,6 +148,73 @@ class CrudPro {
144
148
  return this.serviceHub.getCachedCfgByMethod(method, isEnableCache);
145
149
  }
146
150
 
151
+ /**
152
+ * 如果是 INSERT/UPDATE 操作(sqlSimpleName 模式),根据真实表结构过滤 reqModel.data 中的字段
153
+ * 避免传入不存在的字段导致 SQL 执行报错
154
+ * 注意:只处理 sqlSimpleName 模式,不处理 sqlCfgList 模式
155
+ * @param reqModel 请求模型
156
+ * @param cfgModel 配置模型
157
+ */
158
+ private async filterDataByTableMetaIfNeeded(reqModel: RequestModel, cfgModel: RequestCfgModel): Promise<void> {
159
+ // 只有在有 data 数据时才需要过滤
160
+ if (!reqModel.data || Object.keys(reqModel.data).length === 0) {
161
+ return;
162
+ }
163
+
164
+ // 只处理 sqlSimpleName 模式
165
+ const sqlSimpleName = cfgModel.sqlSimpleName;
166
+ if (!sqlSimpleName) {
167
+ return;
168
+ }
169
+
170
+ // 判断是否为 INSERT/UPDATE 类型的简单 SQL
171
+ if (!this.isSimpleInsertOrUpdateType(sqlSimpleName)) {
172
+ return;
173
+ }
174
+
175
+ // 构建 SqlCfgModel 用于获取表结构
176
+ const sqlCfgModel: ISqlCfgModel = {
177
+ sqlTable: cfgModel.sqlTable,
178
+ sqlSchema: cfgModel.sqlSchema,
179
+ sqlDatabase: cfgModel.sqlDatabase,
180
+ sqlDbType: cfgModel.sqlDbType,
181
+ columns: cfgModel.columns,
182
+ columnsRelation: cfgModel.columnsRelation,
183
+ };
184
+
185
+ const filteredData = await this.serviceHub.filterDataByTableMeta(reqModel.data, sqlCfgModel as ISqlCfgModel);
186
+
187
+ // 记录被过滤的字段
188
+ const originalKeys = Object.keys(reqModel.data);
189
+ const filteredKeys = Object.keys(filteredData);
190
+ const removedKeys = originalKeys.filter(key => !filteredKeys.includes(key));
191
+
192
+ if (removedKeys.length > 0) {
193
+ this.executeContext.getLogger().info('CrudPro.filterDataByTableMetaIfNeeded: 过滤掉表中不存在的字段', {
194
+ table: cfgModel.sqlTable,
195
+ removedFields: removedKeys,
196
+ });
197
+ }
198
+
199
+ // 直接修改 reqModel.data,只保留表中存在的字段
200
+ reqModel.data = filteredData;
201
+ }
202
+
203
+ /**
204
+ * 判断 sqlSimpleName 是否为 INSERT/UPDATE 类型
205
+ * @param sqlSimpleName 简单 SQL 名称
206
+ * @returns 是否为 INSERT/UPDATE 类型
207
+ */
208
+ private isSimpleInsertOrUpdateType(sqlSimpleName: string): boolean {
209
+ const insertOrUpdateTypes = [
210
+ KeysOfSimpleSQL.SIMPLE_INSERT,
211
+ KeysOfSimpleSQL.SIMPLE_UPDATE,
212
+ KeysOfSimpleSQL.SIMPLE_INSERT_ON_DUPLICATE_UPDATE,
213
+ KeysOfSimpleSQL.SIMPLE_INSERT_OR_UPDATE,
214
+ ];
215
+ return insertOrUpdateTypes.includes(sqlSimpleName as KeysOfSimpleSQL);
216
+ }
217
+
147
218
  private async executeSQLList() {
148
219
  try {
149
220
  await this.serviceHub.executeSqlCfgModels();
@@ -12,9 +12,20 @@ export interface ICrudProCfg {
12
12
  tableMetaCacheTime?: number; // 表格元信息缓存时间
13
13
  }
14
14
 
15
+ export interface ITableColumn {
16
+ name: string; // 字段名
17
+ type: string; // 数据类型
18
+ isNullable: boolean; // 是否可空
19
+ isPrimaryKey?: boolean; // 是否主键
20
+ defaultValue?: any; // 默认值
21
+ maxLength?: number; // 最大长度
22
+ comment?: string; // 字段注释
23
+ }
24
+
15
25
  export interface ITableMeta {
16
26
  expiredTime: number; // 过期时间
17
27
  tableColumns: string[]; // 表格所有字段
28
+ columnDetails?: ITableColumn[]; // 详细的字段信息
18
29
  }
19
30
 
20
31
  export interface IConnectionPool {
@@ -200,4 +211,15 @@ export interface IExecuteUnsafeQueryCtx {
200
211
  sqlTable: string;
201
212
  sqlDatabase: string;
202
213
  sqlDbType: SqlDbType;
214
+ sqlSchema?: string;
215
+ }
216
+
217
+ /**
218
+ * 表结构元数据查询参数
219
+ */
220
+ export interface ITableMetaQuery {
221
+ sqlTable: string;
222
+ sqlDatabase: string;
223
+ sqlDbType: SqlDbType;
224
+ sqlSchema?: string;
203
225
  }
@@ -2,7 +2,7 @@ import { RequestCfgModel } from './RequestCfgModel';
2
2
  import { RequestModel } from './RequestModel';
3
3
  import { SqlCfgModel } from './SqlCfgModel';
4
4
  import { ExecuteContext } from './ExecuteContext';
5
- import { IFuncCfgModel, IRequestCfgModel, ITableMeta } from '../interfaces';
5
+ import { IFuncCfgModel, IRequestCfgModel, ITableMeta, ITableMetaQuery } from '../interfaces';
6
6
  import { FuncContext } from './FuncContext';
7
7
 
8
8
  export interface ICurdProServiceHub {
@@ -28,5 +28,5 @@ export interface ICurdProServiceHub {
28
28
 
29
29
  executeFuncCfg(tmpFunCfg: IFuncCfgModel, exeFunCtx: FuncContext): string;
30
30
 
31
- getTableMeta(sqlCfgModel: SqlCfgModel): Promise<ITableMeta>;
31
+ getTableMeta(query: ITableMetaQuery): Promise<ITableMeta>;
32
32
  }
@@ -0,0 +1,58 @@
1
+ import { CrudProServiceBase } from './CrudProServiceBase';
2
+ import { ISqlCfgModel, ITableMetaQuery } from '../interfaces';
3
+
4
+ /**
5
+ * 数据过滤服务
6
+ * 用于在 INSERT/UPDATE 操作前,根据真实表结构过滤 data 对象中的字段
7
+ */
8
+ class CrudProDataFilterService extends CrudProServiceBase {
9
+ /**
10
+ * 根据表结构过滤 data 对象
11
+ * 只保留表中存在的字段
12
+ * @param data 原始 data 对象
13
+ * @param sqlCfgModel SQL 配置(可以是 ISqlCfgModel 接口或 SqlCfgModel 对象)
14
+ * @returns 过滤后的 data 对象
15
+ */
16
+ async filterDataByTableMeta(data: Record<string, any>, sqlCfgModel: ISqlCfgModel): Promise<Record<string, any>> {
17
+ if (!data || Object.keys(data).length === 0) {
18
+ return data;
19
+ }
20
+
21
+ // 确保 sqlTable 存在
22
+ if (!sqlCfgModel.sqlTable) {
23
+ this.logger.warn('CrudProDataFilterService: sqlTable 为空,跳过过滤');
24
+ return data;
25
+ }
26
+
27
+ const query: ITableMetaQuery = {
28
+ sqlTable: sqlCfgModel.sqlTable,
29
+ sqlDatabase: sqlCfgModel.sqlDatabase,
30
+ sqlDbType: sqlCfgModel.sqlDbType,
31
+ sqlSchema: sqlCfgModel.sqlSchema
32
+ }
33
+
34
+ const tableMeta = await this.serviceHub.getTableMeta(query);
35
+ if (!tableMeta || !tableMeta.tableColumns || tableMeta.tableColumns.length === 0) {
36
+ this.logger.warn('CrudProDataFilterService: 无法获取表结构信息,跳过过滤', sqlCfgModel.sqlTable);
37
+ return data;
38
+ }
39
+
40
+ const validColumns = new Set(tableMeta.tableColumns);
41
+ const filteredData: Record<string, any> = {};
42
+
43
+ for (const [key, value] of Object.entries(data)) {
44
+ if (validColumns.has(key)) {
45
+ filteredData[key] = value;
46
+ } else {
47
+ this.logger.debug('CrudProDataFilterService: 过滤掉不存在的字段', {
48
+ table: sqlCfgModel.sqlTable,
49
+ field: key,
50
+ });
51
+ }
52
+ }
53
+
54
+ return filteredData;
55
+ }
56
+ }
57
+
58
+ export { CrudProDataFilterService };
@@ -1,5 +1,6 @@
1
1
  import { CrudProServiceBase } from './CrudProServiceBase';
2
2
  import { SqlCfgModel } from '../models/SqlCfgModel';
3
+ import { ITableMetaQuery } from '../interfaces';
3
4
  import { MixinUtils } from '../utils/MixinUtils';
4
5
  import { SqlSegArg } from '../models/SqlSegArg';
5
6
  import { KeysOfCustomSQL, SqlDbType } from '../models/keys';
@@ -365,7 +366,15 @@ class CrudProOriginToExecuteSql extends CrudProServiceBase {
365
366
  * @private
366
367
  */
367
368
  private async generateCfgColumns(sqlCfgModel: SqlCfgModel): Promise<string[]> {
368
- const tableMeta = await this.serviceHub.getTableMeta(sqlCfgModel);
369
+
370
+ const query: ITableMetaQuery = {
371
+ sqlTable: sqlCfgModel.sqlTable,
372
+ sqlDatabase: sqlCfgModel.sqlDatabase,
373
+ sqlDbType: sqlCfgModel.sqlDbType,
374
+ sqlSchema: sqlCfgModel.sqlSchema
375
+ }
376
+
377
+ const tableMeta = await this.serviceHub.getTableMeta(query);
369
378
 
370
379
  const tableColumns = tableMeta.tableColumns;
371
380
  const cfgColumns = sqlCfgModel.columns || [];
@@ -1,25 +1,24 @@
1
1
  import { CrudProServiceBase } from './CrudProServiceBase';
2
- import { SqlCfgModel } from '../models/SqlCfgModel';
3
- import { IExecuteUnsafeQueryCtx, ITableMeta } from '../interfaces';
2
+ import { IExecuteUnsafeQueryCtx, ITableColumn, ITableMeta, ITableMetaQuery } from '../interfaces';
4
3
  import { SqlDbType } from '../models/keys';
5
4
  // import { pickAndConvertRowsByMix } from '../utils/sqlConvert/convertMix';
6
5
 
7
6
  class CrudProTableMetaCache {
8
7
  private cacheMap: Record<string, ITableMeta> = {};
9
- private getCacheKey(sqlCfgModel: SqlCfgModel) {
10
- return `${sqlCfgModel.sqlDatabase}:::${sqlCfgModel.sqlSchema}:::${sqlCfgModel.sqlTable}`;
8
+ private getCacheKey(query: ITableMetaQuery) {
9
+ return `${query.sqlDatabase}:::${query.sqlSchema}:::${query.sqlDbType}:::${query.sqlTable}`;
11
10
  }
12
- public getMeta(sqlCfgModel: SqlCfgModel) {
13
- const cacheKey = this.getCacheKey(sqlCfgModel);
11
+ public getMeta(query: ITableMetaQuery) {
12
+ const cacheKey = this.getCacheKey(query);
14
13
  const obj = this.cacheMap[cacheKey];
15
- if (obj && obj.expiredTime < Date.now()) {
14
+ if (obj && obj.expiredTime > Date.now()) {
16
15
  return obj;
17
16
  }
18
17
  return null;
19
18
  }
20
19
 
21
- public setMeta(sqlCfgModel: SqlCfgModel, metaObj: ITableMeta) {
22
- const cacheKey = this.getCacheKey(sqlCfgModel);
20
+ public setMeta(query: ITableMetaQuery, metaObj: ITableMeta) {
21
+ const cacheKey = this.getCacheKey(query);
23
22
  this.cacheMap[cacheKey] = metaObj;
24
23
  }
25
24
  }
@@ -27,60 +26,166 @@ class CrudProTableMetaCache {
27
26
  const metaCache = new CrudProTableMetaCache();
28
27
 
29
28
  class CrudProTableMetaService extends CrudProServiceBase {
30
- async getTableMeta(sqlCfgModel: SqlCfgModel): Promise<ITableMeta> {
31
- let obj = metaCache.getMeta(sqlCfgModel);
29
+ public async getTableMeta(query: ITableMetaQuery): Promise<ITableMeta> {
30
+ let obj = metaCache.getMeta(query);
32
31
  if (!obj) {
33
- obj = await this.loadTableMeta(sqlCfgModel);
34
- metaCache.setMeta(sqlCfgModel, obj);
32
+ obj = await this.loadTableMeta(query);
33
+ metaCache.setMeta(query, obj);
35
34
  }
36
35
  return obj;
37
36
  }
38
37
 
39
- private async loadTableMeta(sqlCfgModel: SqlCfgModel): Promise<ITableMeta> {
38
+ private async loadTableMeta(query: ITableMetaQuery): Promise<ITableMeta> {
40
39
  const { tableMetaCacheTime } = this.getContextCfg();
41
40
 
42
- const obj = {
43
- expiredTime: Date.now() + tableMetaCacheTime || 1000 * 3600 * 24 * 365,
41
+ const obj: ITableMeta = {
42
+ expiredTime: Date.now() + (tableMetaCacheTime || 1000 * 3600 * 24 * 365),
44
43
  tableColumns: [],
44
+ columnDetails: [],
45
45
  };
46
46
 
47
47
  const baseInfo: IExecuteUnsafeQueryCtx = {
48
- sqlTable: sqlCfgModel.sqlTable,
49
- sqlDatabase: sqlCfgModel.sqlDatabase,
50
- sqlDbType: sqlCfgModel.sqlDbType,
48
+ sqlTable: query.sqlTable,
49
+ sqlDatabase: query.sqlDatabase,
50
+ sqlDbType: query.sqlDbType,
51
51
  };
52
52
 
53
- obj.tableColumns = await this.loadTableColumnInfo(baseInfo);
53
+ obj.columnDetails = await this.loadTableColumnDetails(baseInfo);
54
+ obj.tableColumns = obj.columnDetails.map(col => col.name);
54
55
 
55
56
  return obj;
56
57
  }
57
58
 
58
- private async loadTableColumnInfo(baseInfo: IExecuteUnsafeQueryCtx): Promise<string[]> {
59
+ private async loadTableColumnDetails(baseInfo: IExecuteUnsafeQueryCtx): Promise<ITableColumn[]> {
59
60
  if (baseInfo.sqlDbType === SqlDbType.mysql) {
60
- const queryRes = await this.executeUnsafeQuery(baseInfo, 'describe ' + baseInfo.sqlTable);
61
- const tableDescribe = queryRes.rows || []; //pickAndConvertRowsByMix(queryRes, baseInfo.sqlDbType);
62
- const tableDescribe2 = JSON.parse(JSON.stringify(tableDescribe));
63
- return tableDescribe2.map(fieldObj => {
64
- return fieldObj['Field'];
65
- });
61
+ return this.loadMySQLColumnDetails(baseInfo);
66
62
  } else if (baseInfo.sqlDbType === SqlDbType.postgres) {
67
- const schemaname = 'public';
68
- const columnArraySql = `
69
- SELECT
70
- *
71
- FROM information_schema.columns
72
- WHERE table_schema = '${schemaname}' and table_name = '${baseInfo.sqlTable}'
73
- ORDER BY ordinal_position;
74
- `.trim();
75
- const queryRes = await this.executeUnsafeQuery(baseInfo, columnArraySql);
76
- const tableDescribe = queryRes.rows || [];
77
- return tableDescribe.map(fieldObj => {
78
- return fieldObj['column_name'];
79
- });
63
+ return this.loadPostgreSQLColumnDetails(baseInfo);
64
+ } else if (baseInfo.sqlDbType === SqlDbType.sqlserver) {
65
+ return this.loadSQLServerColumnDetails(baseInfo);
80
66
  }
81
67
 
82
68
  throw new Error('暂不支持的数据库类型:' + baseInfo.sqlDbType);
83
69
  }
70
+
71
+ private async loadMySQLColumnDetails(baseInfo: IExecuteUnsafeQueryCtx): Promise<ITableColumn[]> {
72
+ const queryRes = await this.executeUnsafeQuery(baseInfo, 'DESCRIBE ' + baseInfo.sqlTable);
73
+ const tableDescribe = queryRes.rows || [];
74
+
75
+ return tableDescribe.map((fieldObj: any) => {
76
+ const { Field, Type, Null, Key, Default, Extra } = fieldObj;
77
+ return {
78
+ name: Field,
79
+ type: Type,
80
+ isNullable: Null === 'YES',
81
+ isPrimaryKey: Key === 'PRI',
82
+ defaultValue: Default,
83
+ comment: Extra,
84
+ };
85
+ });
86
+ }
87
+
88
+ private async loadPostgreSQLColumnDetails(baseInfo: IExecuteUnsafeQueryCtx): Promise<ITableColumn[]> {
89
+ const schemaname = baseInfo.sqlSchema || 'public';
90
+
91
+ // 获取列基本信息
92
+ const columnArraySql = `
93
+ SELECT
94
+ column_name,
95
+ data_type,
96
+ is_nullable,
97
+ column_default,
98
+ character_maximum_length
99
+ FROM information_schema.columns
100
+ WHERE table_schema = '${schemaname}' AND table_name = '${baseInfo.sqlTable}'
101
+ ORDER BY ordinal_position;
102
+ `.trim();
103
+
104
+ const queryRes = await this.executeUnsafeQuery(baseInfo, columnArraySql);
105
+ const columnArray = queryRes.rows || [];
106
+
107
+ // 获取字段注释
108
+ const commentMap = await this.loadPostgreSQLColumnComments(baseInfo, schemaname);
109
+
110
+ return columnArray.map((columnObj: any) => {
111
+ const { column_name, data_type, is_nullable, column_default, character_maximum_length } = columnObj;
112
+ return {
113
+ name: column_name,
114
+ type: data_type,
115
+ isNullable: is_nullable === 'YES',
116
+ defaultValue: column_default,
117
+ maxLength: character_maximum_length,
118
+ comment: commentMap[column_name],
119
+ };
120
+ });
121
+ }
122
+
123
+ private async loadPostgreSQLColumnComments(
124
+ baseInfo: IExecuteUnsafeQueryCtx,
125
+ schemaname: string
126
+ ): Promise<Record<string, string>> {
127
+ const commentArraySql = `
128
+ SELECT
129
+ a.attname AS column_name,
130
+ d.description AS column_comment
131
+ FROM pg_class c
132
+ JOIN pg_namespace n ON c.relnamespace = n.oid
133
+ JOIN pg_attribute a ON c.oid = a.attrelid
134
+ LEFT JOIN pg_description d ON c.oid = d.objoid AND a.attnum = d.objsubid
135
+ WHERE n.nspname = '${schemaname}'
136
+ AND c.relname = '${baseInfo.sqlTable}'
137
+ AND a.attnum > 0
138
+ ORDER BY a.attnum;
139
+ `.trim();
140
+
141
+ const queryRes = await this.executeUnsafeQuery(baseInfo, commentArraySql);
142
+ const commentArray = queryRes.rows || [];
143
+
144
+ const map: Record<string, string> = {};
145
+ commentArray.forEach((commentObj: any) => {
146
+ const { column_name, column_comment } = commentObj;
147
+ map[column_name] = column_comment || '';
148
+ });
149
+
150
+ return map;
151
+ }
152
+
153
+ private async loadSQLServerColumnDetails(baseInfo: IExecuteUnsafeQueryCtx): Promise<ITableColumn[]> {
154
+ const columnArraySql = `
155
+ SELECT
156
+ c.name AS column_name,
157
+ t.name AS data_type,
158
+ c.max_length,
159
+ c.precision,
160
+ c.scale,
161
+ c.is_nullable,
162
+ c.is_identity,
163
+ dc.definition AS column_default,
164
+ ep.value AS column_comment
165
+ FROM sys.columns c
166
+ JOIN sys.types t ON c.user_type_id = t.user_type_id
167
+ LEFT JOIN sys.default_constraints dc ON c.default_object_id = dc.object_id
168
+ LEFT JOIN sys.extended_properties ep ON c.object_id = ep.major_id AND c.column_id = ep.minor_id
169
+ WHERE c.object_id = OBJECT_ID('${baseInfo.sqlTable}')
170
+ ORDER BY c.column_id;
171
+ `.trim();
172
+
173
+ const queryRes = await this.executeUnsafeQuery(baseInfo, columnArraySql);
174
+ const columnArray = queryRes.rows || [];
175
+
176
+ return columnArray.map((columnObj: any) => {
177
+ const { column_name, data_type, is_nullable, column_default, column_comment, max_length, is_identity } = columnObj;
178
+ return {
179
+ name: column_name,
180
+ type: data_type,
181
+ isNullable: is_nullable,
182
+ defaultValue: column_default,
183
+ comment: column_comment,
184
+ maxLength: max_length,
185
+ isPrimaryKey: is_identity,
186
+ };
187
+ });
188
+ }
84
189
  }
85
190
 
86
191
  export { CrudProTableMetaService };
@@ -1,4 +1,4 @@
1
- import { IFuncCfgModel, IRequestCfgModel, ITableMeta } from '../interfaces';
1
+ import { IFuncCfgModel, IRequestCfgModel, ISqlCfgModel, ITableMeta, ITableMetaQuery } from '../interfaces';
2
2
  import { RequestModel } from '../models/RequestModel';
3
3
  import { CrudProFieldValidateService } from './CrudProFieldValidateService';
4
4
  import { CrudProFieldUpdateService } from './CrudProFieldUpdateService';
@@ -13,6 +13,7 @@ import { ICurdProServiceHub } from '../models/ServiceHub';
13
13
  import { FuncContext } from '../models/FuncContext';
14
14
  import { CrudProExecuteFuncService } from './CrudProExecuteFuncService';
15
15
  import { CrudProTableMetaService } from './CrudProTableMetaService';
16
+ import { CrudProDataFilterService } from './CrudProDataFilterService';
16
17
 
17
18
  class CurdProServiceHub implements ICurdProServiceHub {
18
19
  private readonly executeContext: ExecuteContext;
@@ -25,6 +26,7 @@ class CurdProServiceHub implements ICurdProServiceHub {
25
26
  private readonly originToExecuteSql: CrudProOriginToExecuteSql;
26
27
  private readonly executeFuncService: CrudProExecuteFuncService;
27
28
  private readonly tableMetaService: CrudProTableMetaService;
29
+ private readonly dataFilterService: CrudProDataFilterService;
28
30
 
29
31
  constructor(executeContext: ExecuteContext) {
30
32
  this.executeContext = executeContext;
@@ -36,6 +38,7 @@ class CurdProServiceHub implements ICurdProServiceHub {
36
38
  this.originToExecuteSql = new CrudProOriginToExecuteSql(this);
37
39
  this.executeFuncService = new CrudProExecuteFuncService(this);
38
40
  this.tableMetaService = new CrudProTableMetaService(this);
41
+ this.dataFilterService = new CrudProDataFilterService(this);
39
42
  }
40
43
 
41
44
  getExecuteContext(): ExecuteContext {
@@ -84,8 +87,12 @@ class CurdProServiceHub implements ICurdProServiceHub {
84
87
  return this.executeFuncService.executeFuncCfg(funCfg, funcContext);
85
88
  }
86
89
 
87
- async getTableMeta(sqlCfgModel: SqlCfgModel): Promise<ITableMeta> {
88
- return await this.tableMetaService.getTableMeta(sqlCfgModel);
90
+ async getTableMeta(query: ITableMetaQuery): Promise<ITableMeta> {
91
+ return await this.tableMetaService.getTableMeta(query);
92
+ }
93
+
94
+ async filterDataByTableMeta(data: Record<string, any>, sqlCfgModel: ISqlCfgModel | SqlCfgModel): Promise<Record<string, any>> {
95
+ return await this.dataFilterService.filterDataByTableMeta(data, sqlCfgModel);
89
96
  }
90
97
  }
91
98
 
@@ -1,13 +1,13 @@
1
-
2
- const CrudMonitor = {
3
- mysqlGetConnectionCount: 0,
4
- mysqlReleaseConnectionCount: 0,
5
- postgresGetConnectionCount: 0,
6
- postgresReleaseConnectionCount: 0,
7
- mssqlGetConnectionCount: 0,
8
- mssqlReleaseConnectionCount: 0,
9
- }
10
-
11
- export {
12
- CrudMonitor,
13
- }
1
+
2
+ const CrudMonitor = {
3
+ mysqlGetConnectionCount: 0,
4
+ mysqlReleaseConnectionCount: 0,
5
+ postgresGetConnectionCount: 0,
6
+ postgresReleaseConnectionCount: 0,
7
+ mssqlGetConnectionCount: 0,
8
+ mssqlReleaseConnectionCount: 0,
9
+ }
10
+
11
+ export {
12
+ CrudMonitor,
13
+ }