midway-fatcms 0.0.1-beta.4 → 0.0.1-beta.41

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 (336) 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 +58 -15
  5. package/dist/config/seed/aeskey.txt +1 -1
  6. package/dist/configuration.d.ts +1 -0
  7. package/dist/configuration.js +33 -9
  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/DocGatewayController.js +14 -9
  15. package/dist/controller/gateway/FileController.d.ts +3 -2
  16. package/dist/controller/gateway/PublicApiController.js +4 -6
  17. package/dist/controller/gateway/StaticController.d.ts +0 -1
  18. package/dist/controller/gateway/StaticController.js +40 -39
  19. package/dist/controller/helpers.controller.d.ts +1 -1
  20. package/dist/controller/home.controller.js +4 -3
  21. package/dist/controller/manage/AnyApiMangeApi.js +2 -2
  22. package/dist/controller/manage/AppLogMangeApi.js +2 -2
  23. package/dist/controller/manage/AppMangeApi.js +2 -2
  24. package/dist/controller/manage/AppPageMangeApi.js +2 -2
  25. package/dist/controller/manage/AppSchemaHistoryApi.js +2 -2
  26. package/dist/controller/manage/CrudMethodsMangeApi.js +2 -2
  27. package/dist/controller/manage/CrudStandardDesignApi.d.ts +1 -1
  28. package/dist/controller/manage/CrudStandardDesignApi.js +86 -83
  29. package/dist/controller/manage/DataDictManageApi.d.ts +1 -1
  30. package/dist/controller/manage/DataDictManageApi.js +1 -1
  31. package/dist/controller/manage/DeployManageApi.d.ts +1 -1
  32. package/dist/controller/manage/DeployManageApi.js +38 -34
  33. package/dist/controller/manage/DocLibManageApi.js +2 -2
  34. package/dist/controller/manage/DocManageApi.js +2 -2
  35. package/dist/controller/manage/FileManageApi.js +1 -1
  36. package/dist/controller/manage/LowCodeTplManageApi.js +2 -2
  37. package/dist/controller/manage/MenuManageApi.js +2 -2
  38. package/dist/controller/manage/ProxyApiMangeApi.js +2 -2
  39. package/dist/controller/manage/SuperAdminManageApi.d.ts +2 -2
  40. package/dist/controller/manage/SuperAdminManageApi.js +12 -8
  41. package/dist/controller/manage/SysConfigMangeApi.d.ts +1 -1
  42. package/dist/controller/manage/SysConfigMangeApi.js +8 -6
  43. package/dist/controller/manage/SystemInfoManageApi.d.ts +1 -1
  44. package/dist/controller/manage/SystemInfoManageApi.js +7 -1
  45. package/dist/controller/manage/UserAccountManageApi.d.ts +2 -2
  46. package/dist/controller/manage/UserAccountManageApi.js +7 -2
  47. package/dist/controller/manage/WorkbenchMangeApi.js +3 -3
  48. package/dist/controller/myinfo/AuthController.d.ts +0 -4
  49. package/dist/controller/myinfo/AuthController.js +1 -54
  50. package/dist/controller/render/AppRenderController.js +12 -5
  51. package/dist/controller/test.controller.d.ts +1 -1
  52. package/dist/controller/test.controller.js +5 -5
  53. package/dist/index.d.ts +35 -4
  54. package/dist/index.js +35 -4
  55. package/dist/libs/crud-pro/CrudPro.d.ts +1 -0
  56. package/dist/libs/crud-pro/CrudPro.js +5 -0
  57. package/dist/libs/crud-pro/defaultConfigs.js +2 -0
  58. package/dist/libs/crud-pro/interfaces.d.ts +7 -1
  59. package/dist/libs/crud-pro/models/ExecuteContext.d.ts +12 -5
  60. package/dist/libs/crud-pro/models/ExecuteContextFunc.d.ts +8 -1
  61. package/dist/libs/crud-pro/models/ExecuteContextFunc.js +8 -0
  62. package/dist/libs/crud-pro/models/RequestCfgModel.d.ts +1 -1
  63. package/dist/libs/crud-pro/models/ResModel.d.ts +16 -0
  64. package/dist/libs/crud-pro/models/ResModel.js +2 -0
  65. package/dist/libs/crud-pro/models/SqlCfgModel.d.ts +1 -1
  66. package/dist/libs/crud-pro/models/Transaction.d.ts +1 -0
  67. package/dist/libs/crud-pro/models/Transaction.js +7 -0
  68. package/dist/libs/crud-pro/models/TransactionSqlServer.js +1 -1
  69. package/dist/libs/crud-pro/services/CrudProCachedCfgService.d.ts +1 -0
  70. package/dist/libs/crud-pro/services/CrudProCachedCfgService.js +27 -15
  71. package/dist/libs/crud-pro/services/CrudProExecuteSqlService.js +17 -19
  72. package/dist/libs/crud-pro/services/CrudProGenSqlCondition.d.ts +1 -1
  73. package/dist/libs/crud-pro/services/CrudProGenSqlCondition.js +10 -12
  74. package/dist/libs/crud-pro/services/CrudProGenSqlService.js +14 -23
  75. package/dist/libs/crud-pro/services/CrudProOriginToExecuteSql.js +7 -6
  76. package/dist/libs/crud-pro/services/CrudProServiceBase.d.ts +2 -6
  77. package/dist/libs/crud-pro/services/CrudProServiceBase.js +15 -3
  78. package/dist/libs/crud-pro/services/CrudProTableMetaService.d.ts +1 -0
  79. package/dist/libs/crud-pro/services/CrudProTableMetaService.js +32 -7
  80. package/dist/libs/crud-pro/sql.txt +120 -120
  81. package/dist/libs/crud-pro/utils/DatabaseName.js +24 -3
  82. package/dist/libs/crud-pro/utils/MixinUtils.js +1 -1
  83. package/dist/libs/crud-pro/utils/ValidateUtils.js +1 -1
  84. package/dist/libs/crud-pro/utils/sqlConvert/convertColumnName.js +2 -2
  85. package/dist/libs/crud-pro/utils/sqlConvert/convertMix.d.ts +3 -0
  86. package/dist/libs/crud-pro/utils/sqlConvert/convertMix.js +22 -0
  87. package/dist/libs/global-config/global-config.d.ts +45 -0
  88. package/dist/libs/global-config/global-config.js +33 -0
  89. package/dist/libs/utils/base64.d.ts +9 -0
  90. package/dist/libs/utils/base64.js +42 -0
  91. package/dist/libs/utils/errorToString.d.ts +2 -0
  92. package/dist/libs/utils/errorToString.js +57 -0
  93. package/dist/libs/utils/fatcms-request.js +2 -2
  94. package/dist/libs/utils/functions.d.ts +2 -1
  95. package/dist/libs/utils/functions.js +6 -1
  96. package/dist/middleware/forbidden.middleware.js +4 -20
  97. package/dist/middleware/global.middleware.js +30 -10
  98. package/dist/middleware/permission.middleware.js +1 -1
  99. package/dist/models/AsyncTaskModel.d.ts +74 -0
  100. package/dist/models/AsyncTaskModel.js +31 -0
  101. package/dist/models/RedisKeys.d.ts +14 -0
  102. package/dist/models/RedisKeys.js +17 -0
  103. package/dist/models/SystemEntities.d.ts +8 -1
  104. package/dist/models/SystemEntities.js +7 -0
  105. package/dist/models/SystemTables.d.ts +1 -3
  106. package/dist/models/SystemTables.js +2 -4
  107. package/dist/models/bizmodels.d.ts +28 -0
  108. package/dist/models/bizmodels.js +6 -1
  109. package/dist/schedule/anonymousContext.d.ts +14 -0
  110. package/dist/schedule/anonymousContext.js +59 -0
  111. package/dist/schedule/index.d.ts +4 -3
  112. package/dist/schedule/index.js +8 -67
  113. package/dist/schedule/runSchedule.d.ts +12 -0
  114. package/dist/schedule/runSchedule.js +68 -0
  115. package/dist/schedule/scheduleNames.d.ts +13 -0
  116. package/dist/schedule/scheduleNames.js +17 -0
  117. package/dist/service/AuthService.js +8 -5
  118. package/dist/service/EnumInfoService.js +9 -5
  119. package/dist/service/FileCenterService.js +13 -9
  120. package/dist/service/SysConfigService.d.ts +1 -1
  121. package/dist/service/SysConfigService.js +4 -2
  122. package/dist/service/UserAccountService.js +10 -6
  123. package/dist/service/UserSessionService.d.ts +21 -0
  124. package/dist/service/UserSessionService.js +73 -2
  125. package/dist/service/VisitStatService.d.ts +1 -1
  126. package/dist/service/VisitStatService.js +20 -27
  127. package/dist/service/WorkbenchService.d.ts +33 -0
  128. package/dist/service/WorkbenchService.js +70 -12
  129. package/dist/service/anyapi/AnyApiSandboxService.js +12 -12
  130. package/dist/service/anyapi/AnyApiService.js +4 -2
  131. package/dist/service/asyncTask/AsyncTaskRunnerService.d.ts +50 -0
  132. package/dist/service/asyncTask/AsyncTaskRunnerService.js +287 -0
  133. package/dist/service/asyncTask/AsyncTaskService.d.ts +7 -0
  134. package/dist/service/asyncTask/AsyncTaskService.js +34 -0
  135. package/dist/service/asyncTask/handler/ExcelInfoModel.d.ts +10 -0
  136. package/dist/service/asyncTask/handler/ExcelInfoModel.js +2 -0
  137. package/dist/service/asyncTask/handler/ExportExcelAsyncTaskHandler.d.ts +7 -0
  138. package/dist/service/asyncTask/handler/ExportExcelAsyncTaskHandler.js +216 -0
  139. package/dist/service/asyncTask/handler/ExportExcelByInnerHttpHandler.d.ts +36 -0
  140. package/dist/service/asyncTask/handler/ExportExcelByInnerHttpHandler.js +139 -0
  141. package/dist/service/asyncTask/handler/ExportExcelByStdCrudHandler.d.ts +46 -0
  142. package/dist/service/asyncTask/handler/ExportExcelByStdCrudHandler.js +121 -0
  143. package/dist/service/base/BaseService.d.ts +12 -0
  144. package/dist/service/base/BaseService.js +22 -0
  145. package/dist/service/base/RedisCacheService.d.ts +7 -0
  146. package/dist/service/base/RedisCacheService.js +7 -0
  147. package/dist/service/crudstd/CrudStdService.d.ts +8 -1
  148. package/dist/service/crudstd/CrudStdService.js +63 -6
  149. package/dist/service/curd/CrudProQuick.d.ts +44 -0
  150. package/dist/service/curd/CrudProQuick.js +147 -0
  151. package/dist/service/curd/CurdMixByAccountService.d.ts +4 -4
  152. package/dist/service/curd/CurdMixByAccountService.js +12 -6
  153. package/dist/service/curd/CurdMixByDictService.d.ts +4 -4
  154. package/dist/service/curd/CurdMixByDictService.js +10 -7
  155. package/dist/service/curd/CurdMixByLinkToCustomService.d.ts +13 -4
  156. package/dist/service/curd/CurdMixByLinkToCustomService.js +73 -24
  157. package/dist/service/curd/CurdMixBySysConfigService.d.ts +3 -3
  158. package/dist/service/curd/CurdMixBySysConfigService.js +4 -2
  159. package/dist/service/curd/CurdMixByWorkbenchService.d.ts +3 -3
  160. package/dist/service/curd/CurdMixByWorkbenchService.js +4 -2
  161. package/dist/service/curd/CurdMixService.d.ts +13 -3
  162. package/dist/service/curd/CurdMixService.js +26 -2
  163. package/dist/service/curd/CurdMixUtils.d.ts +27 -4
  164. package/dist/service/curd/CurdMixUtils.js +115 -41
  165. package/dist/service/curd/CurdProService.d.ts +3 -10
  166. package/dist/service/curd/CurdProService.js +36 -148
  167. package/dist/service/curd/fixCfgModel.d.ts +3 -0
  168. package/dist/service/curd/fixCfgModel.js +107 -0
  169. package/dist/service/proxyapi/ProxyApiLoadService.js +7 -4
  170. package/dist/service/proxyapi/ProxyApiService.d.ts +1 -0
  171. package/dist/service/proxyapi/ProxyApiService.js +43 -9
  172. package/dist/views/404_app.html +31 -31
  173. package/dist/views/404_workbench.html +34 -34
  174. package/package.json +28 -24
  175. package/tsconfig.json +32 -0
  176. package/dist/controller/medstatistic/MedAdminController.d.ts +0 -35
  177. package/dist/controller/medstatistic/MedAdminController.js +0 -205
  178. package/dist/controller/medstatistic/MedClientController.d.ts +0 -28
  179. package/dist/controller/medstatistic/MedClientController.js +0 -188
  180. package/dist/controller/medstatistic/MedMessageService.d.ts +0 -19
  181. package/dist/controller/medstatistic/MedMessageService.js +0 -95
  182. package/dist/controller/medstatistic/MedScoreService.d.ts +0 -21
  183. package/dist/controller/medstatistic/MedScoreService.js +0 -107
  184. package/dist/controller/medstatistic/constants.d.ts +0 -32
  185. package/dist/controller/medstatistic/constants.js +0 -43
  186. package/src/config/config.default.ts +0 -172
  187. package/src/config/seed/aeskey.txt +0 -1
  188. package/src/config/utils.ts +0 -23
  189. package/src/configuration.ts +0 -83
  190. package/src/controller/base/BaseApiController.ts +0 -145
  191. package/src/controller/gateway/AnyApiGatewayController.ts +0 -33
  192. package/src/controller/gateway/CrudMtdGatewayController.ts +0 -107
  193. package/src/controller/gateway/CrudStdGatewayController.ts +0 -101
  194. package/src/controller/gateway/DocGatewayController.ts +0 -165
  195. package/src/controller/gateway/FileController.ts +0 -110
  196. package/src/controller/gateway/ProxyApiGatewayController.ts +0 -47
  197. package/src/controller/gateway/PublicApiController.ts +0 -145
  198. package/src/controller/gateway/StaticController.ts +0 -328
  199. package/src/controller/helpers.controller.ts +0 -161
  200. package/src/controller/home.controller.ts +0 -71
  201. package/src/controller/manage/AnyApiMangeApi.ts +0 -66
  202. package/src/controller/manage/AppLogMangeApi.ts +0 -53
  203. package/src/controller/manage/AppMangeApi.ts +0 -53
  204. package/src/controller/manage/AppPageMangeApi.ts +0 -52
  205. package/src/controller/manage/AppSchemaHistoryApi.ts +0 -49
  206. package/src/controller/manage/CrudMethodsMangeApi.ts +0 -49
  207. package/src/controller/manage/CrudStandardDesignApi.ts +0 -353
  208. package/src/controller/manage/DataDictManageApi.ts +0 -78
  209. package/src/controller/manage/DeployManageApi.ts +0 -179
  210. package/src/controller/manage/DocLibManageApi.ts +0 -69
  211. package/src/controller/manage/DocManageApi.ts +0 -99
  212. package/src/controller/manage/FileManageApi.ts +0 -45
  213. package/src/controller/manage/LowCodeTplManageApi.ts +0 -52
  214. package/src/controller/manage/MenuManageApi.ts +0 -63
  215. package/src/controller/manage/ProxyApiMangeApi.ts +0 -52
  216. package/src/controller/manage/SuperAdminManageApi.ts +0 -138
  217. package/src/controller/manage/SysConfigMangeApi.ts +0 -95
  218. package/src/controller/manage/SystemInfoManageApi.ts +0 -48
  219. package/src/controller/manage/UserAccountManageApi.ts +0 -88
  220. package/src/controller/manage/WorkbenchMangeApi.ts +0 -72
  221. package/src/controller/medstatistic/MedAdminController.ts +0 -221
  222. package/src/controller/medstatistic/MedClientController.ts +0 -188
  223. package/src/controller/medstatistic/MedMessageService.ts +0 -89
  224. package/src/controller/medstatistic/MedScoreService.ts +0 -108
  225. package/src/controller/medstatistic/constants.ts +0 -63
  226. package/src/controller/myinfo/AuthController.ts +0 -174
  227. package/src/controller/myinfo/MyInfoController.ts +0 -32
  228. package/src/controller/render/AppRenderController.ts +0 -76
  229. package/src/controller/test.controller.ts +0 -37
  230. package/src/filter/default.filter.ts +0 -13
  231. package/src/filter/notfound.filter.ts +0 -10
  232. package/src/index.ts +0 -71
  233. package/src/interface.ts +0 -31
  234. package/src/libs/crud-pro/CrudPro.ts +0 -158
  235. package/src/libs/crud-pro/defaultConfigs.ts +0 -13
  236. package/src/libs/crud-pro/exceptions.ts +0 -124
  237. package/src/libs/crud-pro/interfaces.ts +0 -183
  238. package/src/libs/crud-pro/models/ExecuteContext.ts +0 -111
  239. package/src/libs/crud-pro/models/ExecuteContextFunc.ts +0 -86
  240. package/src/libs/crud-pro/models/FuncContext.ts +0 -21
  241. package/src/libs/crud-pro/models/RequestCfgModel.ts +0 -141
  242. package/src/libs/crud-pro/models/RequestModel.ts +0 -141
  243. package/src/libs/crud-pro/models/ServiceHub.ts +0 -32
  244. package/src/libs/crud-pro/models/SqlCfgModel.ts +0 -52
  245. package/src/libs/crud-pro/models/SqlSegArg.ts +0 -13
  246. package/src/libs/crud-pro/models/Transaction.ts +0 -74
  247. package/src/libs/crud-pro/models/TransactionMySQL.ts +0 -79
  248. package/src/libs/crud-pro/models/TransactionPostgres.ts +0 -91
  249. package/src/libs/crud-pro/models/TransactionSqlServer.ts +0 -107
  250. package/src/libs/crud-pro/models/keys.ts +0 -159
  251. package/src/libs/crud-pro/services/CrudProCachedCfgService.ts +0 -75
  252. package/src/libs/crud-pro/services/CrudProExecuteFuncService.ts +0 -128
  253. package/src/libs/crud-pro/services/CrudProExecuteSqlService.ts +0 -279
  254. package/src/libs/crud-pro/services/CrudProFieldUpdateService.ts +0 -60
  255. package/src/libs/crud-pro/services/CrudProFieldValidateService.ts +0 -180
  256. package/src/libs/crud-pro/services/CrudProGenSqlCondition.ts +0 -373
  257. package/src/libs/crud-pro/services/CrudProGenSqlService.ts +0 -202
  258. package/src/libs/crud-pro/services/CrudProOriginToExecuteSql.ts +0 -397
  259. package/src/libs/crud-pro/services/CrudProServiceBase.ts +0 -98
  260. package/src/libs/crud-pro/services/CrudProTableMetaService.ts +0 -59
  261. package/src/libs/crud-pro/services/CurdProServiceHub.ts +0 -92
  262. package/src/libs/crud-pro/sql.txt +0 -120
  263. package/src/libs/crud-pro/utils/CompareUtils.ts +0 -23
  264. package/src/libs/crud-pro/utils/DatabaseName.ts +0 -40
  265. package/src/libs/crud-pro/utils/DateTimeUtils.ts +0 -20
  266. package/src/libs/crud-pro/utils/MemoryRefreshCache.ts +0 -64
  267. package/src/libs/crud-pro/utils/MessageParseUtils.ts +0 -33
  268. package/src/libs/crud-pro/utils/MixinUtils.ts +0 -285
  269. package/src/libs/crud-pro/utils/ModelUtils.ts +0 -55
  270. package/src/libs/crud-pro/utils/MultiKeyMap.ts +0 -72
  271. package/src/libs/crud-pro/utils/SqlFuncUtils.ts +0 -29
  272. package/src/libs/crud-pro/utils/TypeUtils.ts +0 -188
  273. package/src/libs/crud-pro/utils/ValidateUtils.ts +0 -167
  274. package/src/libs/crud-pro/utils/pool/MySQLUtils.ts +0 -20
  275. package/src/libs/crud-pro/utils/pool/PostgresUtils.ts +0 -22
  276. package/src/libs/crud-pro/utils/pool/SqlServerUtils.ts +0 -22
  277. package/src/libs/crud-pro/utils/sqlConvert/convertColumnName.ts +0 -26
  278. package/src/libs/crud-pro/utils/sqlConvert/convertMsSql.ts +0 -11
  279. package/src/libs/crud-pro/utils/sqlConvert/convertPgSql.ts +0 -11
  280. package/src/libs/crud-pro/utils/sqlConvert/convertPgType.ts +0 -129
  281. package/src/libs/utils/common-dto.ts +0 -52
  282. package/src/libs/utils/crypto-utils.ts +0 -52
  283. package/src/libs/utils/fatcms-request.ts +0 -115
  284. package/src/libs/utils/functions.ts +0 -67
  285. package/src/libs/utils/ordernum-utils.ts +0 -18
  286. package/src/libs/utils/parseConfig.ts +0 -62
  287. package/src/libs/utils/parseCreateSql.ts +0 -91
  288. package/src/libs/utils/render-utils.ts +0 -184
  289. package/src/middleware/forbidden.middleware.ts +0 -71
  290. package/src/middleware/global.middleware.ts +0 -278
  291. package/src/middleware/permission.middleware.ts +0 -81
  292. package/src/middleware/tx.middleware.ts +0 -30
  293. package/src/models/SystemEntities.ts +0 -115
  294. package/src/models/SystemPerm.ts +0 -105
  295. package/src/models/SystemTables.ts +0 -30
  296. package/src/models/bizmodels.ts +0 -89
  297. package/src/models/contextLogger.ts +0 -132
  298. package/src/models/devops.ts +0 -17
  299. package/src/models/userSession.ts +0 -216
  300. package/src/schedule/index.ts +0 -73
  301. package/src/service/AuthService.ts +0 -270
  302. package/src/service/EnumInfoService.ts +0 -129
  303. package/src/service/FileCenterService.ts +0 -394
  304. package/src/service/SysConfigService.ts +0 -34
  305. package/src/service/UserAccountService.ts +0 -100
  306. package/src/service/UserSessionService.ts +0 -81
  307. package/src/service/VisitStatService.ts +0 -179
  308. package/src/service/WorkbenchService.ts +0 -160
  309. package/src/service/anyapi/AnyApiSandboxService.ts +0 -121
  310. package/src/service/anyapi/AnyApiService.ts +0 -184
  311. package/src/service/base/ApiBaseService.ts +0 -42
  312. package/src/service/base/ApiRateLimiter.ts +0 -59
  313. package/src/service/base/BaseService.ts +0 -74
  314. package/src/service/base/RedisCacheService.ts +0 -38
  315. package/src/service/crudstd/CrudStdActionService.ts +0 -27
  316. package/src/service/crudstd/CrudStdConstant.ts +0 -62
  317. package/src/service/crudstd/CrudStdRelationService.ts +0 -78
  318. package/src/service/crudstd/CrudStdService.ts +0 -188
  319. package/src/service/curd/CurdMixByAccountService.ts +0 -83
  320. package/src/service/curd/CurdMixByDictService.ts +0 -113
  321. package/src/service/curd/CurdMixByLinkToCustomService.ts +0 -167
  322. package/src/service/curd/CurdMixBySysConfigService.ts +0 -78
  323. package/src/service/curd/CurdMixByWorkbenchService.ts +0 -68
  324. package/src/service/curd/CurdMixService.ts +0 -65
  325. package/src/service/curd/CurdMixUtils.ts +0 -248
  326. package/src/service/curd/CurdProService.ts +0 -379
  327. package/src/service/proxyapi/ProxyApiLoadService.ts +0 -165
  328. package/src/service/proxyapi/ProxyApiService.ts +0 -262
  329. package/src/service/proxyapi/ProxyApiUtils.ts +0 -32
  330. package/src/service/proxyapi/RouteHandler.ts +0 -8
  331. package/src/service/proxyapi/RouteTrie.ts +0 -74
  332. package/src/service/proxyapi/WeightedRandom.ts +0 -37
  333. package/src/service/proxyapi/WeightedRoundRobin.ts +0 -44
  334. package/src/views/404_app.html +0 -31
  335. package/src/views/404_workbench.html +0 -34
  336. package/src/views/static/favicon.ico +0 -0
@@ -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;