midway-fatcms 0.0.1-beta.5 → 0.0.1-beta.51

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 (330) hide show
  1. package/.eslintrc.json +14 -0
  2. package/.prettierrc.js +4 -0
  3. package/README.md +7 -0
  4. package/dist/config/config.default.js +25 -13
  5. package/dist/config/seed/aeskey.txt +1 -1
  6. package/dist/configuration.d.ts +1 -0
  7. package/dist/configuration.js +35 -11
  8. package/dist/controller/base/BaseApiController.d.ts +7 -1
  9. package/dist/controller/base/BaseApiController.js +32 -6
  10. package/dist/controller/gateway/AsyncTaskController.d.ts +20 -0
  11. package/dist/controller/gateway/AsyncTaskController.js +181 -0
  12. package/dist/controller/gateway/CrudMtdGatewayController.d.ts +3 -3
  13. package/dist/controller/gateway/CrudMtdGatewayController.js +9 -6
  14. package/dist/controller/gateway/CrudStdGatewayController.js +8 -16
  15. package/dist/controller/gateway/DocGatewayController.js +14 -9
  16. package/dist/controller/gateway/FileController.d.ts +3 -2
  17. package/dist/controller/gateway/PublicApiController.js +4 -6
  18. package/dist/controller/gateway/StaticController.d.ts +0 -1
  19. package/dist/controller/gateway/StaticController.js +40 -39
  20. package/dist/controller/helpers.controller.d.ts +1 -1
  21. package/dist/controller/home.controller.js +4 -3
  22. package/dist/controller/manage/AnyApiMangeApi.js +2 -2
  23. package/dist/controller/manage/AppLogMangeApi.js +2 -2
  24. package/dist/controller/manage/AppMangeApi.js +2 -2
  25. package/dist/controller/manage/AppPageMangeApi.js +2 -2
  26. package/dist/controller/manage/AppSchemaHistoryApi.js +2 -2
  27. package/dist/controller/manage/CrudMethodsMangeApi.js +2 -2
  28. package/dist/controller/manage/CrudStandardDesignApi.d.ts +9 -1
  29. package/dist/controller/manage/CrudStandardDesignApi.js +135 -79
  30. package/dist/controller/manage/DataDictManageApi.d.ts +1 -1
  31. package/dist/controller/manage/DataDictManageApi.js +1 -1
  32. package/dist/controller/manage/DeployManageApi.d.ts +1 -1
  33. package/dist/controller/manage/DeployManageApi.js +38 -34
  34. package/dist/controller/manage/DocLibManageApi.js +2 -2
  35. package/dist/controller/manage/DocManageApi.js +2 -2
  36. package/dist/controller/manage/FileManageApi.js +1 -1
  37. package/dist/controller/manage/LowCodeTplManageApi.js +2 -2
  38. package/dist/controller/manage/MenuManageApi.js +2 -2
  39. package/dist/controller/manage/ProxyApiMangeApi.js +2 -2
  40. package/dist/controller/manage/SuperAdminManageApi.d.ts +2 -2
  41. package/dist/controller/manage/SuperAdminManageApi.js +12 -8
  42. package/dist/controller/manage/SysConfigMangeApi.d.ts +1 -1
  43. package/dist/controller/manage/SysConfigMangeApi.js +8 -6
  44. package/dist/controller/manage/SystemInfoManageApi.d.ts +1 -1
  45. package/dist/controller/manage/SystemInfoManageApi.js +7 -1
  46. package/dist/controller/manage/UserAccountManageApi.d.ts +1 -1
  47. package/dist/controller/manage/UserAccountManageApi.js +9 -4
  48. package/dist/controller/manage/WorkbenchMangeApi.js +3 -3
  49. package/dist/controller/myinfo/AuthController.d.ts +0 -4
  50. package/dist/controller/myinfo/AuthController.js +1 -54
  51. package/dist/controller/render/AppRenderController.js +12 -5
  52. package/dist/controller/test.controller.d.ts +1 -1
  53. package/dist/controller/test.controller.js +5 -5
  54. package/dist/index.d.ts +10 -0
  55. package/dist/index.js +10 -0
  56. package/dist/libs/crud-pro/CrudPro.d.ts +1 -0
  57. package/dist/libs/crud-pro/CrudPro.js +5 -0
  58. package/dist/libs/crud-pro/defaultConfigs.js +2 -0
  59. package/dist/libs/crud-pro/interfaces.d.ts +7 -1
  60. package/dist/libs/crud-pro/models/ExecuteContext.d.ts +12 -5
  61. package/dist/libs/crud-pro/models/ExecuteContextFunc.d.ts +8 -1
  62. package/dist/libs/crud-pro/models/ExecuteContextFunc.js +8 -0
  63. package/dist/libs/crud-pro/models/RequestCfgModel.d.ts +1 -1
  64. package/dist/libs/crud-pro/models/ResModel.d.ts +16 -0
  65. package/dist/libs/crud-pro/models/ResModel.js +2 -0
  66. package/dist/libs/crud-pro/models/SqlCfgModel.d.ts +1 -1
  67. package/dist/libs/crud-pro/models/Transaction.d.ts +1 -0
  68. package/dist/libs/crud-pro/models/Transaction.js +7 -0
  69. package/dist/libs/crud-pro/models/TransactionSqlServer.js +1 -1
  70. package/dist/libs/crud-pro/services/CrudProCachedCfgService.d.ts +1 -0
  71. package/dist/libs/crud-pro/services/CrudProCachedCfgService.js +27 -15
  72. package/dist/libs/crud-pro/services/CrudProExecuteSqlService.js +17 -19
  73. package/dist/libs/crud-pro/services/CrudProGenSqlCondition.d.ts +1 -1
  74. package/dist/libs/crud-pro/services/CrudProGenSqlCondition.js +10 -12
  75. package/dist/libs/crud-pro/services/CrudProGenSqlService.js +14 -23
  76. package/dist/libs/crud-pro/services/CrudProOriginToExecuteSql.js +7 -6
  77. package/dist/libs/crud-pro/services/CrudProServiceBase.d.ts +2 -6
  78. package/dist/libs/crud-pro/services/CrudProServiceBase.js +15 -3
  79. package/dist/libs/crud-pro/services/CrudProTableMetaService.d.ts +1 -0
  80. package/dist/libs/crud-pro/services/CrudProTableMetaService.js +32 -7
  81. package/dist/libs/crud-pro/sql.txt +120 -120
  82. package/dist/libs/crud-pro/utils/DatabaseName.js +24 -3
  83. package/dist/libs/crud-pro/utils/MixinUtils.js +1 -1
  84. package/dist/libs/crud-pro/utils/ValidateUtils.js +1 -1
  85. package/dist/libs/crud-pro/utils/sqlConvert/convertColumnName.js +2 -2
  86. package/dist/libs/crud-pro/utils/sqlConvert/convertMix.d.ts +3 -0
  87. package/dist/libs/crud-pro/utils/sqlConvert/convertMix.js +22 -0
  88. package/dist/libs/global-config/global-config.d.ts +60 -0
  89. package/dist/libs/global-config/global-config.js +35 -0
  90. package/dist/libs/utils/base64.d.ts +9 -0
  91. package/dist/libs/utils/base64.js +42 -0
  92. package/dist/libs/utils/errorToString.d.ts +2 -0
  93. package/dist/libs/utils/errorToString.js +57 -0
  94. package/dist/libs/utils/fatcms-request.js +2 -2
  95. package/dist/libs/utils/functions.d.ts +2 -1
  96. package/dist/libs/utils/functions.js +12 -3
  97. package/dist/libs/utils/parseCreateSql.d.ts +6 -1
  98. package/dist/libs/utils/parseCreateSql.js +2 -1
  99. package/dist/middleware/forbidden.middleware.js +6 -22
  100. package/dist/middleware/global.middleware.js +30 -10
  101. package/dist/middleware/permission.middleware.js +1 -1
  102. package/dist/middleware/rediscache.middleware.d.ts +3 -0
  103. package/dist/middleware/rediscache.middleware.js +77 -0
  104. package/dist/middleware/redislock.middleware.d.ts +7 -0
  105. package/dist/middleware/redislock.middleware.js +72 -0
  106. package/dist/models/AsyncTaskModel.d.ts +74 -0
  107. package/dist/models/AsyncTaskModel.js +31 -0
  108. package/dist/models/RedisKeys.d.ts +15 -0
  109. package/dist/models/RedisKeys.js +18 -0
  110. package/dist/models/SystemEntities.d.ts +8 -1
  111. package/dist/models/SystemEntities.js +7 -0
  112. package/dist/models/SystemTables.d.ts +1 -3
  113. package/dist/models/SystemTables.js +2 -4
  114. package/dist/models/bizmodels.d.ts +30 -0
  115. package/dist/models/bizmodels.js +6 -1
  116. package/dist/models/userSession.d.ts +1 -0
  117. package/dist/schedule/anonymousContext.d.ts +14 -0
  118. package/dist/schedule/anonymousContext.js +59 -0
  119. package/dist/schedule/index.d.ts +4 -3
  120. package/dist/schedule/index.js +8 -67
  121. package/dist/schedule/runSchedule.d.ts +12 -0
  122. package/dist/schedule/runSchedule.js +68 -0
  123. package/dist/schedule/scheduleNames.d.ts +13 -0
  124. package/dist/schedule/scheduleNames.js +17 -0
  125. package/dist/service/AuthService.js +8 -5
  126. package/dist/service/EnumInfoService.js +9 -5
  127. package/dist/service/FileCenterService.js +13 -9
  128. package/dist/service/SysConfigService.d.ts +1 -1
  129. package/dist/service/SysConfigService.js +4 -2
  130. package/dist/service/UserAccountService.js +10 -6
  131. package/dist/service/UserSessionService.d.ts +22 -0
  132. package/dist/service/UserSessionService.js +74 -2
  133. package/dist/service/VisitStatService.d.ts +1 -1
  134. package/dist/service/VisitStatService.js +20 -27
  135. package/dist/service/WorkbenchService.d.ts +33 -0
  136. package/dist/service/WorkbenchService.js +70 -12
  137. package/dist/service/anyapi/AnyApiSandboxService.js +12 -12
  138. package/dist/service/anyapi/AnyApiService.js +4 -2
  139. package/dist/service/asyncTask/AsyncTaskRunnerService.d.ts +50 -0
  140. package/dist/service/asyncTask/AsyncTaskRunnerService.js +287 -0
  141. package/dist/service/asyncTask/AsyncTaskService.d.ts +7 -0
  142. package/dist/service/asyncTask/AsyncTaskService.js +34 -0
  143. package/dist/service/asyncTask/handler/ExcelInfoModel.d.ts +10 -0
  144. package/dist/service/asyncTask/handler/ExcelInfoModel.js +2 -0
  145. package/dist/service/asyncTask/handler/ExportExcelAsyncTaskHandler.d.ts +7 -0
  146. package/dist/service/asyncTask/handler/ExportExcelAsyncTaskHandler.js +216 -0
  147. package/dist/service/asyncTask/handler/ExportExcelByInnerHttpHandler.d.ts +36 -0
  148. package/dist/service/asyncTask/handler/ExportExcelByInnerHttpHandler.js +141 -0
  149. package/dist/service/asyncTask/handler/ExportExcelByStdCrudHandler.d.ts +46 -0
  150. package/dist/service/asyncTask/handler/ExportExcelByStdCrudHandler.js +135 -0
  151. package/dist/service/base/BaseService.d.ts +12 -0
  152. package/dist/service/base/BaseService.js +22 -0
  153. package/dist/service/base/RedisCacheService.d.ts +7 -0
  154. package/dist/service/base/RedisCacheService.js +7 -0
  155. package/dist/service/crudstd/CrudStdRelationService.js +63 -36
  156. package/dist/service/crudstd/CrudStdService.d.ts +21 -5
  157. package/dist/service/crudstd/CrudStdService.js +137 -21
  158. package/dist/service/curd/CrudProQuick.d.ts +44 -0
  159. package/dist/service/curd/CrudProQuick.js +147 -0
  160. package/dist/service/curd/CurdMixByAccountService.d.ts +4 -4
  161. package/dist/service/curd/CurdMixByAccountService.js +11 -6
  162. package/dist/service/curd/CurdMixByDictService.d.ts +4 -4
  163. package/dist/service/curd/CurdMixByDictService.js +10 -7
  164. package/dist/service/curd/CurdMixByLinkToCustomService.d.ts +13 -4
  165. package/dist/service/curd/CurdMixByLinkToCustomService.js +73 -24
  166. package/dist/service/curd/CurdMixBySysConfigService.d.ts +3 -3
  167. package/dist/service/curd/CurdMixBySysConfigService.js +4 -2
  168. package/dist/service/curd/CurdMixByWorkbenchService.d.ts +3 -3
  169. package/dist/service/curd/CurdMixByWorkbenchService.js +4 -2
  170. package/dist/service/curd/CurdMixService.d.ts +16 -5
  171. package/dist/service/curd/CurdMixService.js +26 -2
  172. package/dist/service/curd/CurdMixUtils.d.ts +27 -4
  173. package/dist/service/curd/CurdMixUtils.js +117 -41
  174. package/dist/service/curd/CurdProService.d.ts +3 -10
  175. package/dist/service/curd/CurdProService.js +38 -148
  176. package/dist/service/curd/fixCfgModel.d.ts +3 -0
  177. package/dist/service/curd/fixCfgModel.js +104 -0
  178. package/dist/service/proxyapi/ProxyApiLoadService.js +7 -4
  179. package/dist/service/proxyapi/ProxyApiService.d.ts +1 -0
  180. package/dist/service/proxyapi/ProxyApiService.js +43 -9
  181. package/dist/views/404_app.html +31 -31
  182. package/dist/views/404_workbench.html +34 -34
  183. package/package.json +28 -24
  184. package/tsconfig.json +32 -0
  185. package/src/config/config.default.ts +0 -172
  186. package/src/config/seed/aeskey.txt +0 -1
  187. package/src/config/utils.ts +0 -23
  188. package/src/configuration.ts +0 -83
  189. package/src/controller/base/BaseApiController.ts +0 -145
  190. package/src/controller/gateway/AnyApiGatewayController.ts +0 -33
  191. package/src/controller/gateway/CrudMtdGatewayController.ts +0 -107
  192. package/src/controller/gateway/CrudStdGatewayController.ts +0 -101
  193. package/src/controller/gateway/DocGatewayController.ts +0 -165
  194. package/src/controller/gateway/FileController.ts +0 -110
  195. package/src/controller/gateway/ProxyApiGatewayController.ts +0 -47
  196. package/src/controller/gateway/PublicApiController.ts +0 -145
  197. package/src/controller/gateway/StaticController.ts +0 -328
  198. package/src/controller/helpers.controller.ts +0 -161
  199. package/src/controller/home.controller.ts +0 -71
  200. package/src/controller/manage/AnyApiMangeApi.ts +0 -66
  201. package/src/controller/manage/AppLogMangeApi.ts +0 -53
  202. package/src/controller/manage/AppMangeApi.ts +0 -53
  203. package/src/controller/manage/AppPageMangeApi.ts +0 -52
  204. package/src/controller/manage/AppSchemaHistoryApi.ts +0 -49
  205. package/src/controller/manage/CrudMethodsMangeApi.ts +0 -49
  206. package/src/controller/manage/CrudStandardDesignApi.ts +0 -353
  207. package/src/controller/manage/DataDictManageApi.ts +0 -78
  208. package/src/controller/manage/DeployManageApi.ts +0 -179
  209. package/src/controller/manage/DocLibManageApi.ts +0 -69
  210. package/src/controller/manage/DocManageApi.ts +0 -99
  211. package/src/controller/manage/FileManageApi.ts +0 -45
  212. package/src/controller/manage/LowCodeTplManageApi.ts +0 -52
  213. package/src/controller/manage/MenuManageApi.ts +0 -63
  214. package/src/controller/manage/ProxyApiMangeApi.ts +0 -52
  215. package/src/controller/manage/SuperAdminManageApi.ts +0 -138
  216. package/src/controller/manage/SysConfigMangeApi.ts +0 -95
  217. package/src/controller/manage/SystemInfoManageApi.ts +0 -48
  218. package/src/controller/manage/UserAccountManageApi.ts +0 -88
  219. package/src/controller/manage/WorkbenchMangeApi.ts +0 -72
  220. package/src/controller/myinfo/AuthController.ts +0 -174
  221. package/src/controller/myinfo/MyInfoController.ts +0 -32
  222. package/src/controller/render/AppRenderController.ts +0 -76
  223. package/src/controller/test.controller.ts +0 -37
  224. package/src/filter/default.filter.ts +0 -13
  225. package/src/filter/notfound.filter.ts +0 -10
  226. package/src/index.ts +0 -99
  227. package/src/interface.ts +0 -31
  228. package/src/libs/crud-pro/CrudPro.ts +0 -158
  229. package/src/libs/crud-pro/defaultConfigs.ts +0 -13
  230. package/src/libs/crud-pro/exceptions.ts +0 -124
  231. package/src/libs/crud-pro/interfaces.ts +0 -183
  232. package/src/libs/crud-pro/models/ExecuteContext.ts +0 -111
  233. package/src/libs/crud-pro/models/ExecuteContextFunc.ts +0 -86
  234. package/src/libs/crud-pro/models/FuncContext.ts +0 -21
  235. package/src/libs/crud-pro/models/RequestCfgModel.ts +0 -141
  236. package/src/libs/crud-pro/models/RequestModel.ts +0 -141
  237. package/src/libs/crud-pro/models/ServiceHub.ts +0 -32
  238. package/src/libs/crud-pro/models/SqlCfgModel.ts +0 -52
  239. package/src/libs/crud-pro/models/SqlSegArg.ts +0 -13
  240. package/src/libs/crud-pro/models/Transaction.ts +0 -74
  241. package/src/libs/crud-pro/models/TransactionMySQL.ts +0 -79
  242. package/src/libs/crud-pro/models/TransactionPostgres.ts +0 -91
  243. package/src/libs/crud-pro/models/TransactionSqlServer.ts +0 -107
  244. package/src/libs/crud-pro/models/keys.ts +0 -159
  245. package/src/libs/crud-pro/services/CrudProCachedCfgService.ts +0 -75
  246. package/src/libs/crud-pro/services/CrudProExecuteFuncService.ts +0 -128
  247. package/src/libs/crud-pro/services/CrudProExecuteSqlService.ts +0 -279
  248. package/src/libs/crud-pro/services/CrudProFieldUpdateService.ts +0 -60
  249. package/src/libs/crud-pro/services/CrudProFieldValidateService.ts +0 -180
  250. package/src/libs/crud-pro/services/CrudProGenSqlCondition.ts +0 -373
  251. package/src/libs/crud-pro/services/CrudProGenSqlService.ts +0 -202
  252. package/src/libs/crud-pro/services/CrudProOriginToExecuteSql.ts +0 -397
  253. package/src/libs/crud-pro/services/CrudProServiceBase.ts +0 -98
  254. package/src/libs/crud-pro/services/CrudProTableMetaService.ts +0 -59
  255. package/src/libs/crud-pro/services/CurdProServiceHub.ts +0 -92
  256. package/src/libs/crud-pro/sql.txt +0 -120
  257. package/src/libs/crud-pro/utils/CompareUtils.ts +0 -23
  258. package/src/libs/crud-pro/utils/DatabaseName.ts +0 -40
  259. package/src/libs/crud-pro/utils/DateTimeUtils.ts +0 -20
  260. package/src/libs/crud-pro/utils/MemoryRefreshCache.ts +0 -64
  261. package/src/libs/crud-pro/utils/MessageParseUtils.ts +0 -33
  262. package/src/libs/crud-pro/utils/MixinUtils.ts +0 -285
  263. package/src/libs/crud-pro/utils/ModelUtils.ts +0 -55
  264. package/src/libs/crud-pro/utils/MultiKeyMap.ts +0 -72
  265. package/src/libs/crud-pro/utils/SqlFuncUtils.ts +0 -29
  266. package/src/libs/crud-pro/utils/TypeUtils.ts +0 -188
  267. package/src/libs/crud-pro/utils/ValidateUtils.ts +0 -167
  268. package/src/libs/crud-pro/utils/pool/MySQLUtils.ts +0 -20
  269. package/src/libs/crud-pro/utils/pool/PostgresUtils.ts +0 -22
  270. package/src/libs/crud-pro/utils/pool/SqlServerUtils.ts +0 -22
  271. package/src/libs/crud-pro/utils/sqlConvert/convertColumnName.ts +0 -26
  272. package/src/libs/crud-pro/utils/sqlConvert/convertMsSql.ts +0 -11
  273. package/src/libs/crud-pro/utils/sqlConvert/convertPgSql.ts +0 -11
  274. package/src/libs/crud-pro/utils/sqlConvert/convertPgType.ts +0 -129
  275. package/src/libs/utils/common-dto.ts +0 -52
  276. package/src/libs/utils/crypto-utils.ts +0 -52
  277. package/src/libs/utils/fatcms-request.ts +0 -115
  278. package/src/libs/utils/functions.ts +0 -67
  279. package/src/libs/utils/ordernum-utils.ts +0 -18
  280. package/src/libs/utils/parseConfig.ts +0 -62
  281. package/src/libs/utils/parseCreateSql.ts +0 -91
  282. package/src/libs/utils/render-utils.ts +0 -184
  283. package/src/middleware/forbidden.middleware.ts +0 -71
  284. package/src/middleware/global.middleware.ts +0 -278
  285. package/src/middleware/permission.middleware.ts +0 -81
  286. package/src/middleware/tx.middleware.ts +0 -30
  287. package/src/models/SystemEntities.ts +0 -115
  288. package/src/models/SystemPerm.ts +0 -105
  289. package/src/models/SystemTables.ts +0 -30
  290. package/src/models/bizmodels.ts +0 -89
  291. package/src/models/contextLogger.ts +0 -132
  292. package/src/models/devops.ts +0 -17
  293. package/src/models/userSession.ts +0 -216
  294. package/src/schedule/index.ts +0 -73
  295. package/src/service/AuthService.ts +0 -270
  296. package/src/service/EnumInfoService.ts +0 -129
  297. package/src/service/FileCenterService.ts +0 -394
  298. package/src/service/SysConfigService.ts +0 -34
  299. package/src/service/UserAccountService.ts +0 -100
  300. package/src/service/UserSessionService.ts +0 -81
  301. package/src/service/VisitStatService.ts +0 -179
  302. package/src/service/WorkbenchService.ts +0 -160
  303. package/src/service/anyapi/AnyApiSandboxService.ts +0 -121
  304. package/src/service/anyapi/AnyApiService.ts +0 -184
  305. package/src/service/base/ApiBaseService.ts +0 -42
  306. package/src/service/base/ApiRateLimiter.ts +0 -59
  307. package/src/service/base/BaseService.ts +0 -74
  308. package/src/service/base/RedisCacheService.ts +0 -38
  309. package/src/service/crudstd/CrudStdActionService.ts +0 -27
  310. package/src/service/crudstd/CrudStdConstant.ts +0 -62
  311. package/src/service/crudstd/CrudStdRelationService.ts +0 -78
  312. package/src/service/crudstd/CrudStdService.ts +0 -188
  313. package/src/service/curd/CurdMixByAccountService.ts +0 -83
  314. package/src/service/curd/CurdMixByDictService.ts +0 -113
  315. package/src/service/curd/CurdMixByLinkToCustomService.ts +0 -167
  316. package/src/service/curd/CurdMixBySysConfigService.ts +0 -78
  317. package/src/service/curd/CurdMixByWorkbenchService.ts +0 -68
  318. package/src/service/curd/CurdMixService.ts +0 -65
  319. package/src/service/curd/CurdMixUtils.ts +0 -248
  320. package/src/service/curd/CurdProService.ts +0 -379
  321. package/src/service/proxyapi/ProxyApiLoadService.ts +0 -165
  322. package/src/service/proxyapi/ProxyApiService.ts +0 -262
  323. package/src/service/proxyapi/ProxyApiUtils.ts +0 -32
  324. package/src/service/proxyapi/RouteHandler.ts +0 -8
  325. package/src/service/proxyapi/RouteTrie.ts +0 -74
  326. package/src/service/proxyapi/WeightedRandom.ts +0 -37
  327. package/src/service/proxyapi/WeightedRoundRobin.ts +0 -44
  328. package/src/views/404_app.html +0 -31
  329. package/src/views/404_workbench.html +0 -34
  330. package/src/views/static/favicon.ico +0 -0
@@ -54,6 +54,14 @@ class BaseExecuteContextFunc {
54
54
  afterExecuteSQLList() {
55
55
  return null;
56
56
  }
57
+ /**
58
+ * 在执行之前可以根据业务需要修改需要执行的内容
59
+ * @param reqJson
60
+ * @param cfgJson
61
+ */
62
+ beforeExecuteSQLList(reqJson, cfgJson) {
63
+ return Promise.resolve();
64
+ }
57
65
  getExecuteContext() {
58
66
  return this.executeContext;
59
67
  }
@@ -13,7 +13,7 @@ declare class RequestCfgModel {
13
13
  sqlTable: string;
14
14
  sqlSchema?: string;
15
15
  sqlDatabase?: string;
16
- sqlDdType?: SqlDbType;
16
+ sqlDbType?: SqlDbType;
17
17
  maxLimit: number;
18
18
  method: string;
19
19
  transactionEnable: boolean;
@@ -0,0 +1,16 @@
1
+ interface ResModelAffected {
2
+ insertId?: string | number;
3
+ affectedRows: number;
4
+ }
5
+ interface ResModelStandard {
6
+ row?: any;
7
+ rows?: any[];
8
+ total_count?: number;
9
+ affected?: ResModelAffected;
10
+ insert_affected?: ResModelAffected;
11
+ update_affected?: ResModelAffected;
12
+ }
13
+ declare type ResModelFlexible = ResModelStandard & {
14
+ [key: string]: any;
15
+ };
16
+ export { ResModelAffected, ResModelStandard, ResModelFlexible };
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -6,7 +6,7 @@ declare class SqlCfgModel {
6
6
  sqlTable: string;
7
7
  sqlSchema?: string;
8
8
  sqlDatabase?: string;
9
- sqlDdType?: SqlDbType;
9
+ sqlDbType?: SqlDbType;
10
10
  maxLimit: number;
11
11
  resName: string;
12
12
  resPicker: KeysOfSqlResPicker;
@@ -3,6 +3,7 @@ declare class Transaction {
3
3
  private transactionMySQL;
4
4
  private transactionPostgres;
5
5
  private transactionSqlServer;
6
+ private isReleased;
6
7
  private getTxObj;
7
8
  /**
8
9
  * 获取链接对象
@@ -10,6 +10,7 @@ class Transaction {
10
10
  this.transactionMySQL = new TransactionMySQL_1.TransactionMySQL();
11
11
  this.transactionPostgres = new TransactionPostgres_1.TransactionPostgres();
12
12
  this.transactionSqlServer = new TransactionSqlServer_1.TransactionSqlServer();
13
+ this.isReleased = false;
13
14
  }
14
15
  getTxObj(pool) {
15
16
  if (pool.dbType === keys_1.SqlDbType.postgres) {
@@ -28,6 +29,11 @@ class Transaction {
28
29
  * @param pool
29
30
  */
30
31
  async getTxConnection(pool) {
32
+ if (this.isReleased) {
33
+ const msg = '[Transaction] getTxConnection error, the txObject is isReleased, please check your code . DB request must be await';
34
+ console.error(msg);
35
+ throw new Error(msg);
36
+ }
31
37
  const txObj = this.getTxObj(pool);
32
38
  return txObj.getTxConnection(pool);
33
39
  }
@@ -62,6 +68,7 @@ class Transaction {
62
68
  await this.transactionMySQL.releaseTx();
63
69
  await this.transactionPostgres.releaseTx();
64
70
  await this.transactionSqlServer.releaseTx();
71
+ this.isReleased = true;
65
72
  }
66
73
  }
67
74
  exports.Transaction = Transaction;
@@ -39,7 +39,7 @@ class TransactionSqlServer {
39
39
  }
40
40
  }
41
41
  return request.query(sql);
42
- }
42
+ },
43
43
  };
44
44
  }
45
45
  /**
@@ -4,6 +4,7 @@ import { ICurdProServiceHub } from '../models/ServiceHub';
4
4
  declare class CrudProCachedCfgService extends CrudProServiceBase {
5
5
  constructor(serviceHub: ICurdProServiceHub);
6
6
  getCachedCfgByMethod(method: string, isEnableCache: boolean): Promise<IRequestCfgModel | null>;
7
+ private getCachedCfgByMethodInner;
7
8
  private loadMethodInfo;
8
9
  private loadMethodInfoList;
9
10
  }
@@ -4,6 +4,7 @@ exports.CrudProCachedCfgService = void 0;
4
4
  const humps_1 = require("humps");
5
5
  const CrudProServiceBase_1 = require("./CrudProServiceBase");
6
6
  const MixinUtils_1 = require("../utils/MixinUtils");
7
+ const convertMix_1 = require("../utils/sqlConvert/convertMix");
7
8
  const MemoryRefreshCache_1 = require("../utils/MemoryRefreshCache");
8
9
  const methodCache = new MemoryRefreshCache_1.default();
9
10
  function parseMethodInfo(methodInfo) {
@@ -17,42 +18,53 @@ class CrudProCachedCfgService extends CrudProServiceBase_1.CrudProServiceBase {
17
18
  super(serviceHub);
18
19
  }
19
20
  async getCachedCfgByMethod(method, isEnableCache) {
21
+ const methodInfo = await this.getCachedCfgByMethodInner(method, isEnableCache);
22
+ if (!methodInfo) {
23
+ return null;
24
+ }
25
+ return { ...methodInfo };
26
+ }
27
+ async getCachedCfgByMethodInner(method, isEnableCache) {
20
28
  // 不使用缓存
21
29
  if (!isEnableCache) {
22
30
  return await this.loadMethodInfo(method);
23
31
  }
24
32
  methodCache.setProps({
25
- keepTime: 2000,
33
+ keepTime: 1000 * 60 * 2,
26
34
  requestFn: () => this.loadMethodInfoList(),
27
35
  getKeyFn: item => item.method,
28
36
  });
29
- return await methodCache.getItem(method);
37
+ const methodInfo = await methodCache.getItem(method);
38
+ if (methodInfo) {
39
+ return methodInfo;
40
+ }
41
+ return await this.loadMethodInfo(method);
30
42
  }
31
43
  async loadMethodInfo(method) {
32
- const { methodsTableName, sysDatabaseName } = this.getContextCfg();
33
- const sql = `select *
34
- from ${methodsTableName}
35
- where method = ? `; // 全部加载到内存
44
+ const { methodsTableName, sysDatabaseName, sysDatabaseDbType } = this.getContextCfg();
45
+ const sql = `select * from ${methodsTableName} where method = ? `; // 全部加载到内存
36
46
  const baseInfo = {
37
- tableName: methodsTableName,
38
- dbName: sysDatabaseName,
47
+ sqlTable: methodsTableName,
48
+ sqlDatabase: sysDatabaseName,
49
+ sqlDbType: sysDatabaseDbType,
39
50
  };
40
- const [rows] = await this.executeUnsafeQuery(baseInfo, sql, [method]);
41
- const rows2 = rows;
51
+ const queryRes = await this.executeUnsafeQuery(baseInfo, sql, [method]);
52
+ const rows2 = (0, convertMix_1.pickAndConvertRowsByMix)(queryRes, sysDatabaseDbType);
42
53
  if (rows2.length > 0) {
43
54
  return parseMethodInfo(rows2[0]);
44
55
  }
45
56
  return null;
46
57
  }
47
58
  async loadMethodInfoList() {
48
- const { methodsTableName, sysDatabaseName } = this.getContextCfg();
59
+ const { methodsTableName, sysDatabaseName, sysDatabaseDbType } = this.getContextCfg();
49
60
  const sql = `select * from ${methodsTableName}`; // 全部加载到内存
50
61
  const baseInfo = {
51
- tableName: methodsTableName,
52
- dbName: sysDatabaseName,
62
+ sqlTable: methodsTableName,
63
+ sqlDatabase: sysDatabaseName,
64
+ sqlDbType: sysDatabaseDbType,
53
65
  };
54
- const [rows] = await this.executeUnsafeQuery(baseInfo, sql);
55
- const rows2 = rows;
66
+ const queryRes = await this.executeUnsafeQuery(baseInfo, sql);
67
+ const rows2 = (0, convertMix_1.pickAndConvertRowsByMix)(queryRes, sysDatabaseDbType);
56
68
  return rows2.map(row => {
57
69
  return parseMethodInfo(row);
58
70
  });
@@ -5,7 +5,7 @@ const _ = require("lodash");
5
5
  const CrudProServiceBase_1 = require("./CrudProServiceBase");
6
6
  const keys_1 = require("../models/keys");
7
7
  const exceptions_1 = require("../exceptions");
8
- const convertPgType_1 = require("../utils/sqlConvert/convertPgType");
8
+ const convertMix_1 = require("../utils/sqlConvert/convertMix");
9
9
  const convertPgSql_1 = require("../utils/sqlConvert/convertPgSql");
10
10
  const convertMsSql_1 = require("../utils/sqlConvert/convertMsSql");
11
11
  const ModelUtils_1 = require("../utils/ModelUtils");
@@ -30,47 +30,45 @@ class CrudProExecuteSqlService extends CrudProServiceBase_1.CrudProServiceBase {
30
30
  const exeCtx = this.getExecuteContext();
31
31
  const connection = await this.getTxConnectionBySqlCfg(sqlCfgModel);
32
32
  const executeSqlArgs = this.handleExecuteSqlArgsByResModel(exeCtx, sqlCfgModel.executeSqlArgs || []);
33
- let sqlRes;
34
33
  let queryRes;
35
- if (sqlCfgModel.sqlDdType === keys_1.SqlDbType.postgres) { // import { PoolClient } from 'pg';
34
+ if (sqlCfgModel.sqlDbType === keys_1.SqlDbType.postgres) {
35
+ // import { PoolClient } from 'pg';
36
36
  const pgClient = connection;
37
37
  const pgSql = (0, convertPgSql_1.replaceQuestionMarks)(sqlCfgModel.executeSql);
38
- this.logger.info('executeSqlCfgModel_postgres', pgSql, executeSqlArgs, sqlCfgModel.resPicker);
38
+ this.logger.debug('[CrudProExecuteSqlService]executeSqlCfgModel_postgres', pgSql, executeSqlArgs, sqlCfgModel.resPicker);
39
39
  queryRes = await pgClient.query({
40
40
  text: pgSql,
41
- values: executeSqlArgs || []
41
+ values: executeSqlArgs || [],
42
42
  });
43
- sqlRes = (0, convertPgType_1.pickAndConvertPgRows)(queryRes);
44
43
  }
45
- else if (sqlCfgModel.sqlDdType === keys_1.SqlDbType.sqlserver) {
46
- const mssql = (0, convertMsSql_1.replaceQuestionMarksForMssql)(sqlCfgModel.executeSql);
47
- this.logger.info('executeSqlCfgModel_sqlserver', mssql, executeSqlArgs, sqlCfgModel.resPicker);
44
+ else if (sqlCfgModel.sqlDbType === keys_1.SqlDbType.sqlserver) {
48
45
  // SQLServer
46
+ const mssql = (0, convertMsSql_1.replaceQuestionMarksForMssql)(sqlCfgModel.executeSql);
47
+ this.logger.debug('[CrudProExecuteSqlService]executeSqlCfgModel_sqlserver', mssql, executeSqlArgs, sqlCfgModel.resPicker);
49
48
  queryRes = await connection.query(mssql, executeSqlArgs);
50
- sqlRes = _.get(queryRes, 'recordsets[0]') || [];
51
49
  }
52
50
  else {
53
- this.logger.info('executeSqlCfgModel_mysql', sqlCfgModel.executeSql, executeSqlArgs, sqlCfgModel.resPicker);
54
51
  // MYSQL
52
+ this.logger.debug('[CrudProExecuteSqlService]executeSqlCfgModel_mysql', sqlCfgModel.executeSql, executeSqlArgs, sqlCfgModel.resPicker);
55
53
  queryRes = await connection.query(sqlCfgModel.executeSql, executeSqlArgs);
56
- sqlRes = queryRes[0];
57
54
  }
55
+ const sqlRes = (0, convertMix_1.pickAndConvertRowsByMix)(queryRes, sqlCfgModel.sqlDbType);
58
56
  const resObject = this.toQueryResByResPicker(sqlRes, queryRes, sqlCfgModel);
59
57
  exeCtx.setResModelItem(sqlCfgModel.resName, resObject);
60
58
  }
61
59
  handleExecuteSqlArgsByResModel(exeCtx, executeSqlArgs) {
62
- return executeSqlArgs.map((arg) => {
60
+ return executeSqlArgs.map(arg => {
63
61
  if (arg && typeof arg === 'object' && typeof arg.___GENERATE_GET_RES_ATTR___ === 'string') {
64
62
  const word = arg.___GENERATE_GET_RES_ATTR___;
65
63
  if (word.startsWith(keys_1.KeysOfCustomSQL.SQL_PICK_RES_AS_NUMBER)) {
66
64
  const resName = MixinUtils_1.MixinUtils.removeStringPrefix(word, keys_1.KeysOfCustomSQL.SQL_PICK_RES_AS_NUMBER);
67
65
  this.logger.info('handleExecuteSqlArgsByResModel resName', resName);
68
- this.logger.info('handleExecuteSqlArgsByResModel getResModel', exeCtx.getResModel());
66
+ this.logger.debug('handleExecuteSqlArgsByResModel getResModel', exeCtx.getResModel());
69
67
  return Number(exeCtx.getResModelItemLodash(resName) || 0);
70
68
  }
71
69
  if (word.startsWith(keys_1.KeysOfCustomSQL.SQL_PICK_RES_AS_STRING)) {
72
70
  const resName = MixinUtils_1.MixinUtils.removeStringPrefix(word, keys_1.KeysOfCustomSQL.SQL_PICK_RES_AS_STRING);
73
- return String(exeCtx.getResModelItemLodash(resName) || "");
71
+ return String(exeCtx.getResModelItemLodash(resName) || '');
74
72
  }
75
73
  }
76
74
  return arg;
@@ -198,16 +196,16 @@ class CrudProExecuteSqlService extends CrudProServiceBase_1.CrudProServiceBase {
198
196
  }
199
197
  // 增删改res的内容是修改结果:包括: insert\delete\update
200
198
  if (keys_1.KeysOfSqlResPicker.UPDATE_RESULT === resPicker) {
201
- if (sqlCfgModel.sqlDdType === keys_1.SqlDbType.postgres) {
199
+ if (sqlCfgModel.sqlDbType === keys_1.SqlDbType.postgres) {
202
200
  return {
203
201
  insertId: _.get(queryRes, 'rows[0].id'),
204
- affectedRows: _.get(queryRes, 'rowCount')
202
+ affectedRows: _.get(queryRes, 'rowCount'),
205
203
  };
206
204
  }
207
- if (sqlCfgModel.sqlDdType === keys_1.SqlDbType.sqlserver) {
205
+ if (sqlCfgModel.sqlDbType === keys_1.SqlDbType.sqlserver) {
208
206
  return {
209
207
  insertId: _.get(queryRes, 'recordset[0].id'),
210
- affectedRows: _.get(queryRes, 'rowsAffected[0]')
208
+ affectedRows: _.get(queryRes, 'rowsAffected[0]'),
211
209
  };
212
210
  }
213
211
  return sqlRes;
@@ -1,5 +1,5 @@
1
1
  import { SqlSegArg } from '../models/SqlSegArg';
2
- import { SqlCfgModel } from "../models/SqlCfgModel";
2
+ import { SqlCfgModel } from '../models/SqlCfgModel';
3
3
  declare class CrudProGenSqlCondition {
4
4
  private readonly sqlCfg;
5
5
  constructor(sqlCfg: SqlCfgModel);
@@ -16,10 +16,8 @@ const createFunc = (sqlCfg) => {
16
16
  },
17
17
  toMatchSqlColumnName: (columnName) => {
18
18
  const arr = columnName.split(',');
19
- return arr
20
- .map(s => (0, convertColumnName_1.toSqlColumnName)(s.trim(), sqlCfg))
21
- .join(',');
22
- }
19
+ return arr.map(s => (0, convertColumnName_1.toSqlColumnName)(s.trim(), sqlCfg)).join(',');
20
+ },
23
21
  };
24
22
  };
25
23
  class ValueChecker {
@@ -192,29 +190,29 @@ class CrudProGenSqlCondition {
192
190
  else if (equalsIgnoreCase(keys_1.KeysOfConditions.$LIKE, compare)) {
193
191
  tmpArgList.push(value0);
194
192
  tmpSql = `${toSqlColumnName(key)} COLLATE UTF8MB4_GENERAL_CI like concat(?, '%')`; // like前缀匹配
195
- if (this.sqlCfg.sqlDdType === keys_1.SqlDbType.postgres) {
196
- tmpSql = `${toSqlColumnName(key)} like concat(?, '%')`; // like前缀匹配
193
+ if (this.sqlCfg.sqlDbType === keys_1.SqlDbType.postgres) {
194
+ tmpSql = `${toSqlColumnName(key)} like concat(?::text, '%')`; // like前缀匹配
197
195
  }
198
196
  }
199
197
  else if (equalsIgnoreCase(keys_1.KeysOfConditions.$NOT_LIKE, compare)) {
200
198
  tmpArgList.push(value0);
201
199
  tmpSql = `${toSqlColumnName(key)} COLLATE UTF8MB4_GENERAL_CI not like concat(?, '%')`;
202
- if (this.sqlCfg.sqlDdType === keys_1.SqlDbType.postgres) {
203
- tmpSql = `${toSqlColumnName(key)} not like concat(?, '%')`;
200
+ if (this.sqlCfg.sqlDbType === keys_1.SqlDbType.postgres) {
201
+ tmpSql = `${toSqlColumnName(key)} not like concat(?::text, '%')`;
204
202
  }
205
203
  }
206
204
  else if (equalsIgnoreCase(keys_1.KeysOfConditions.$LIKE_INCLUDE, compare)) {
207
205
  tmpArgList.push(value0);
208
206
  tmpSql = `${toSqlColumnName(key)} COLLATE UTF8MB4_GENERAL_CI like concat('%', ?, '%')`; // like包含
209
- if (this.sqlCfg.sqlDdType === keys_1.SqlDbType.postgres) {
210
- tmpSql = `${toSqlColumnName(key)} like concat('%', ?, '%')`; // like包含
207
+ if (this.sqlCfg.sqlDbType === keys_1.SqlDbType.postgres) {
208
+ tmpSql = `${toSqlColumnName(key)} like concat('%', ?::text, '%')`; // like包含
211
209
  }
212
210
  }
213
211
  else if (equalsIgnoreCase(keys_1.KeysOfConditions.$NOT_LIKE_INCLUDE, compare)) {
214
212
  tmpArgList.push(value0);
215
213
  tmpSql = `${toSqlColumnName(key)} COLLATE UTF8MB4_GENERAL_CI not like concat('%',?, '%')`; // like不包含
216
- if (this.sqlCfg.sqlDdType === keys_1.SqlDbType.postgres) {
217
- tmpSql = `${toSqlColumnName(key)} not like concat('%',?, '%')`; // like不包含
214
+ if (this.sqlCfg.sqlDbType === keys_1.SqlDbType.postgres) {
215
+ tmpSql = `${toSqlColumnName(key)} not like concat('%',?::text, '%')`; // like不包含
218
216
  }
219
217
  }
220
218
  else if (equalsIgnoreCase(keys_1.KeysOfConditions.$MATCH, compare)) {
@@ -91,10 +91,10 @@ class CrudProGenSqlService extends CrudProServiceBase_1.CrudProServiceBase {
91
91
  * @private
92
92
  */
93
93
  generateOriginSqlForDelete(cfgModel) {
94
- if (cfgModel.sqlDdType === keys_1.SqlDbType.postgres) {
94
+ if (cfgModel.sqlDbType === keys_1.SqlDbType.postgres) {
95
95
  return 'delete from @@table where @@asWhere:condition ';
96
96
  }
97
- if (cfgModel.sqlDdType === keys_1.SqlDbType.sqlserver) {
97
+ if (cfgModel.sqlDbType === keys_1.SqlDbType.sqlserver) {
98
98
  return 'delete from @@table where @@asWhere:condition ';
99
99
  }
100
100
  return 'delete from @@table where @@asWhere:condition limit 100 '; // 删除操作,不能一次性删除太多
@@ -105,35 +105,26 @@ class CrudProGenSqlService extends CrudProServiceBase_1.CrudProServiceBase {
105
105
  * @private
106
106
  */
107
107
  generateOriginSqlForDuplicateInsert(cfgModel) {
108
- if (cfgModel.sqlDdType === keys_1.SqlDbType.postgres) {
108
+ if (cfgModel.sqlDbType === keys_1.SqlDbType.postgres) {
109
109
  const uniqueColumn = cfgModel.uniqueColumn; // id
110
110
  if (!Array.isArray(uniqueColumn) || uniqueColumn.length === 0) {
111
111
  throw new exceptions_1.CommonException(exceptions_1.Exceptions.CFG_ERROR_POSTGRES_UNIQUE_COLUMNS_NULL);
112
112
  }
113
- const unique_column = uniqueColumn.map((s) => {
113
+ const unique_column = uniqueColumn
114
+ .map(s => {
114
115
  return `"${s}"`;
115
- }).join(",");
116
+ })
117
+ .join(',');
116
118
  return `insert into @@table ( @@asInsertKeys:data ) values( @@asInsertValues:data ) ON CONFLICT (${unique_column}) DO UPDATE set @@asUpdate:data `; // 关键字的前后,必须有空格
117
119
  }
118
- if (cfgModel.sqlDdType === keys_1.SqlDbType.sqlserver) {
120
+ if (cfgModel.sqlDbType === keys_1.SqlDbType.sqlserver) {
119
121
  const uniqueColumn = cfgModel.uniqueColumn; // id
120
122
  if (uniqueColumn.length !== 1) {
121
123
  throw new exceptions_1.CommonException(exceptions_1.Exceptions.CFG_UNIQUE_COLUMN_COUNT_MUST_ONE);
122
124
  }
123
125
  const uniqueColumnStr = uniqueColumn[0];
124
- const uniqueColumnVal = "@@data." + uniqueColumnStr;
125
- const sql = "" +
126
- `IF EXISTS (SELECT 1 FROM @@table WHERE [${uniqueColumnStr}] = ${uniqueColumnVal})` +
127
- "BEGIN\n" +
128
- " UPDATE @@table\n" +
129
- " SET @@asUpdate:data\n" +
130
- ` WHERE [${uniqueColumnStr}] = ${uniqueColumnVal} ;\n` +
131
- "END\n" +
132
- "ELSE\n" +
133
- "BEGIN\n" +
134
- " INSERT INTO @@table ( @@asInsertKeys:data )\n" +
135
- " VALUES ( @@asInsertValues:data );\n" +
136
- "END";
126
+ const uniqueColumnVal = '@@data.' + uniqueColumnStr;
127
+ const sql = '' + `IF EXISTS (SELECT 1 FROM @@table WHERE [${uniqueColumnStr}] = ${uniqueColumnVal})` + 'BEGIN\n' + ' UPDATE @@table\n' + ' SET @@asUpdate:data\n' + ` WHERE [${uniqueColumnStr}] = ${uniqueColumnVal} ;\n` + 'END\n' + 'ELSE\n' + 'BEGIN\n' + ' INSERT INTO @@table ( @@asInsertKeys:data )\n' + ' VALUES ( @@asInsertValues:data );\n' + 'END';
137
128
  return sql;
138
129
  }
139
130
  return 'insert into @@table ( @@asInsertKeys:data ) values( @@asInsertValues:data ) on duplicate key update @@asUpdate:data '; // 关键字的前后,必须有空格
@@ -144,10 +135,10 @@ class CrudProGenSqlService extends CrudProServiceBase_1.CrudProServiceBase {
144
135
  * @private
145
136
  */
146
137
  generateOriginSqlForInsert(cfgModel) {
147
- if (cfgModel.sqlDdType === keys_1.SqlDbType.postgres) {
138
+ if (cfgModel.sqlDbType === keys_1.SqlDbType.postgres) {
148
139
  return 'insert into @@table ( @@asInsertKeys:data ) values( @@asInsertValues:data ) RETURNING * ';
149
140
  }
150
- if (cfgModel.sqlDdType === keys_1.SqlDbType.sqlserver) {
141
+ if (cfgModel.sqlDbType === keys_1.SqlDbType.sqlserver) {
151
142
  return 'insert into @@table ( @@asInsertKeys:data ) OUTPUT INSERTED.* values( @@asInsertValues:data ) ';
152
143
  }
153
144
  return 'insert into @@table ( @@asInsertKeys:data ) values( @@asInsertValues:data )'; // 关键字的前后,必须有空格
@@ -156,10 +147,10 @@ class CrudProGenSqlService extends CrudProServiceBase_1.CrudProServiceBase {
156
147
  const exeCtx = this.getExecuteContext();
157
148
  const reqCfgModel = exeCtx.getCfgModel();
158
149
  const sqlCfgList = reqCfgModel.sqlCfgList || [];
159
- const { sqlTable, sqlSchema, sqlDatabase, sqlDdType, maxLimit, columns, columnsRelation } = reqCfgModel;
150
+ const { sqlTable, sqlSchema, sqlDatabase, sqlDbType, maxLimit, columns, columnsRelation } = reqCfgModel;
160
151
  for (let i = 0; i < sqlCfgList.length; i++) {
161
152
  const sqlCfgModel = sqlCfgList[i];
162
- sqlCfgModel.sqlDdType = MixinUtils_1.MixinUtils.selectNotEmpty(sqlCfgModel.sqlDdType, sqlDdType);
153
+ sqlCfgModel.sqlDbType = MixinUtils_1.MixinUtils.selectNotEmpty(sqlCfgModel.sqlDbType, sqlDbType);
163
154
  sqlCfgModel.sqlDatabase = MixinUtils_1.MixinUtils.selectNotEmpty(sqlCfgModel.sqlDatabase, sqlDatabase);
164
155
  sqlCfgModel.sqlSchema = MixinUtils_1.MixinUtils.selectNotEmpty(sqlCfgModel.sqlSchema, sqlSchema);
165
156
  sqlCfgModel.sqlTable = MixinUtils_1.MixinUtils.selectNotEmpty(sqlCfgModel.sqlTable, sqlTable);
@@ -100,8 +100,7 @@ class CrudProOriginToExecuteSql extends CrudProServiceBase_1.CrudProServiceBase
100
100
  else if (word === keys_1.KeysOfCustomSQL.SQL_ORDER_BYS) {
101
101
  return this.generateOrderBys(reqModel, sqlCfg);
102
102
  }
103
- else if ((word.startsWith(keys_1.KeysOfCustomSQL.SQL_GET_DATA_ATTR_START) ||
104
- word.startsWith(keys_1.KeysOfCustomSQL.SQL_GET_CONDITION_ATTR_START)) && word.indexOf('.') > 0) {
103
+ else if ((word.startsWith(keys_1.KeysOfCustomSQL.SQL_GET_DATA_ATTR_START) || word.startsWith(keys_1.KeysOfCustomSQL.SQL_GET_CONDITION_ATTR_START)) && word.indexOf('.') > 0) {
105
104
  return this.generateGetAttr(reqModel, word); //// data.xxx, condition.xxx
106
105
  }
107
106
  else if (word.startsWith(keys_1.KeysOfCustomSQL.SQL_PICK_RES_AS_NUMBER) || word.startsWith(keys_1.KeysOfCustomSQL.SQL_PICK_RES_AS_STRING)) {
@@ -198,10 +197,10 @@ class CrudProOriginToExecuteSql extends CrudProServiceBase_1.CrudProServiceBase
198
197
  const maxLimit = ModelUtils_1.ModelUtils.getMaxLimit(sqlCfg, requestCfg);
199
198
  const reqLimit = req.limit;
200
199
  const limit = Math.min(maxLimit, reqLimit);
201
- if (sqlCfg.sqlDdType === keys_1.SqlDbType.postgres) {
200
+ if (sqlCfg.sqlDbType === keys_1.SqlDbType.postgres) {
202
201
  return new SqlSegArg_1.SqlSegArg(' LIMIT ? OFFSET ? ', [limit, req.offset]);
203
202
  }
204
- if (sqlCfg.sqlDdType === keys_1.SqlDbType.sqlserver) {
203
+ if (sqlCfg.sqlDbType === keys_1.SqlDbType.sqlserver) {
205
204
  return new SqlSegArg_1.SqlSegArg(' OFFSET ? ROWS FETCH NEXT ? ROWS ONLY ', [req.offset, limit]);
206
205
  }
207
206
  return new SqlSegArg_1.SqlSegArg(' limit ?,? ', [req.offset, limit]);
@@ -219,9 +218,11 @@ class CrudProOriginToExecuteSql extends CrudProServiceBase_1.CrudProServiceBase
219
218
  return new SqlSegArg_1.SqlSegArg(sql);
220
219
  }
221
220
  generatePickResAs(req, world) {
222
- return new SqlSegArg_1.SqlSegArg(' ? ', [{
221
+ return new SqlSegArg_1.SqlSegArg(' ? ', [
222
+ {
223
223
  ___GENERATE_GET_RES_ATTR___: world,
224
- }]);
224
+ },
225
+ ]);
225
226
  }
226
227
  generateGetAttr(req, word) {
227
228
  const attrName = MixinUtils_1.MixinUtils.removeStringPrefix(word, '@@');
@@ -1,12 +1,8 @@
1
1
  import { ICurdProServiceHub } from '../models/ServiceHub';
2
- import { ICrudProCfg, ILogger, IPoolConnectionClient } from '../interfaces';
2
+ import { ICrudProCfg, IExecuteUnsafeQueryCtx, ILogger, IPoolConnectionClient } from '../interfaces';
3
3
  import { SqlCfgModel } from '../models/SqlCfgModel';
4
4
  import { ExecuteContext } from '../models/ExecuteContext';
5
5
  import { IExecuteContextFunc } from '../models/ExecuteContextFunc';
6
- interface ExecuteUnsafeQueryCtx {
7
- tableName: string;
8
- dbName: string;
9
- }
10
6
  declare class CrudProServiceBase {
11
7
  protected serviceHub: ICurdProServiceHub;
12
8
  constructor(serviceHub: ICurdProServiceHub);
@@ -21,7 +17,7 @@ declare class CrudProServiceBase {
21
17
  * @param values
22
18
  * @protected
23
19
  */
24
- protected executeUnsafeQuery(obj: ExecuteUnsafeQueryCtx, sql: string, values?: any): Promise<any[]>;
20
+ protected executeUnsafeQuery(obj: IExecuteUnsafeQueryCtx, sql: string, values?: any): Promise<any[]>;
25
21
  protected getContextCfg(): ICrudProCfg;
26
22
  protected getExecuteFunction(funcName: string): any;
27
23
  }
@@ -7,6 +7,9 @@ const TypeUtils_1 = require("../utils/TypeUtils");
7
7
  const CompareUtils_1 = require("../utils/CompareUtils");
8
8
  const DateTimeUtils_1 = require("../utils/DateTimeUtils");
9
9
  const defaultConfigs_1 = require("../defaultConfigs");
10
+ const keys_1 = require("../models/keys");
11
+ const convertPgSql_1 = require("../utils/sqlConvert/convertPgSql");
12
+ const convertMsSql_1 = require("../utils/sqlConvert/convertMsSql");
10
13
  function createBuildInExecuteFuncMap() {
11
14
  return {
12
15
  ...DateTimeUtils_1.DateTimeUtils,
@@ -45,8 +48,9 @@ class CrudProServiceBase {
45
48
  */
46
49
  async executeUnsafeQuery(obj, sql, values) {
47
50
  const sqlCfgModel = {
48
- sqlTable: obj.tableName,
49
- sqlDatabase: obj.dbName,
51
+ sqlTable: obj.sqlTable,
52
+ sqlDatabase: obj.sqlDatabase,
53
+ sqlDbType: obj.sqlDbType,
50
54
  columns: [],
51
55
  columnsRelation: [],
52
56
  maxLimit: defaultConfigs_1.DEFAULT_MAX_LIMIT,
@@ -56,8 +60,16 @@ class CrudProServiceBase {
56
60
  executeSqlArgs: values,
57
61
  crudType: null,
58
62
  };
63
+ if (sqlCfgModel.sqlDbType === keys_1.SqlDbType.postgres) {
64
+ const pgSql = (0, convertPgSql_1.replaceQuestionMarks)(sqlCfgModel.executeSql);
65
+ sqlCfgModel.executeSql = pgSql;
66
+ }
67
+ else if (sqlCfgModel.sqlDbType === keys_1.SqlDbType.sqlserver) {
68
+ const mssql = (0, convertMsSql_1.replaceQuestionMarksForMssql)(sqlCfgModel.executeSql);
69
+ sqlCfgModel.executeSql = mssql;
70
+ }
59
71
  const connection = await this.getTxConnectionBySqlCfg(sqlCfgModel);
60
- return await connection.query(sql, values);
72
+ return await connection.query(sqlCfgModel.executeSql, values);
61
73
  }
62
74
  getContextCfg() {
63
75
  return this.getExecuteContext().getContextCfg();
@@ -4,5 +4,6 @@ import { ITableMeta } from '../interfaces';
4
4
  declare class CrudProTableMetaService extends CrudProServiceBase {
5
5
  getTableMeta(sqlCfgModel: SqlCfgModel): Promise<ITableMeta>;
6
6
  private loadTableMeta;
7
+ private loadTableColumnInfo;
7
8
  }
8
9
  export { CrudProTableMetaService };
@@ -2,6 +2,8 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.CrudProTableMetaService = void 0;
4
4
  const CrudProServiceBase_1 = require("./CrudProServiceBase");
5
+ const keys_1 = require("../models/keys");
6
+ const convertMix_1 = require("../utils/sqlConvert/convertMix");
5
7
  class CrudProTableMetaCache {
6
8
  constructor() {
7
9
  this.cacheMap = {};
@@ -39,15 +41,38 @@ class CrudProTableMetaService extends CrudProServiceBase_1.CrudProServiceBase {
39
41
  tableColumns: [],
40
42
  };
41
43
  const baseInfo = {
42
- tableName: sqlCfgModel.sqlTable,
43
- dbName: sqlCfgModel.sqlDatabase,
44
+ sqlTable: sqlCfgModel.sqlTable,
45
+ sqlDatabase: sqlCfgModel.sqlDatabase,
46
+ sqlDbType: sqlCfgModel.sqlDbType,
44
47
  };
45
- const [tableDescribe] = await this.executeUnsafeQuery(baseInfo, 'describe ' + sqlCfgModel.sqlTable);
46
- const tableDescribe2 = JSON.parse(JSON.stringify(tableDescribe));
47
- obj.tableColumns = tableDescribe2.map(fieldObj => {
48
- return fieldObj['Field'];
49
- });
48
+ obj.tableColumns = await this.loadTableColumnInfo(baseInfo);
50
49
  return obj;
51
50
  }
51
+ async loadTableColumnInfo(baseInfo) {
52
+ if (baseInfo.sqlDbType === keys_1.SqlDbType.mysql) {
53
+ const queryRes = await this.executeUnsafeQuery(baseInfo, 'describe ' + baseInfo.sqlTable);
54
+ const tableDescribe = (0, convertMix_1.pickAndConvertRowsByMix)(queryRes, baseInfo.sqlDbType);
55
+ const tableDescribe2 = JSON.parse(JSON.stringify(tableDescribe));
56
+ return tableDescribe2.map(fieldObj => {
57
+ return fieldObj['Field'];
58
+ });
59
+ }
60
+ else if (baseInfo.sqlDbType === keys_1.SqlDbType.postgres) {
61
+ const schemaname = 'public';
62
+ const columnArraySql = `
63
+ SELECT
64
+ *
65
+ FROM information_schema.columns
66
+ WHERE table_schema = '${schemaname}' and table_name = '${baseInfo.sqlTable}'
67
+ ORDER BY ordinal_position;
68
+ `.trim();
69
+ const queryRes = await this.executeUnsafeQuery(baseInfo, columnArraySql);
70
+ const tableDescribe = (0, convertMix_1.pickAndConvertRowsByMix)(queryRes, baseInfo.sqlDbType);
71
+ return tableDescribe.map(fieldObj => {
72
+ return fieldObj['column_name'];
73
+ });
74
+ }
75
+ throw new Error('暂不支持的数据库类型:' + baseInfo.sqlDbType);
76
+ }
52
77
  }
53
78
  exports.CrudProTableMetaService = CrudProTableMetaService;