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