From 4eaaf2273e5f43efb565fdbcf4522e14d2ea4a48 Mon Sep 17 00:00:00 2001 From: taojinlong Date: Mon, 23 Aug 2021 16:27:05 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=A0=A1=E9=AA=8C=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E6=BA=90=E7=8A=B6=E6=80=81=E6=97=B6=EF=BC=8C=E5=90=8C=E6=97=B6?= =?UTF-8?q?=E5=88=B7=E6=96=B0=E5=B7=A6=E4=BE=A7=E8=8F=9C=E5=8D=95=E4=B8=AD?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E6=BA=90=E7=9A=84=E7=8A=B6=E6=80=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/DatasourceController.java | 8 ++++++ .../datasource/service/DatasourceService.java | 21 ++++++++++---- frontend/src/api/system/datasource.js | 8 ++++++ frontend/src/views/system/datasource/form.vue | 28 ++++++++++++++++--- 4 files changed, 56 insertions(+), 9 deletions(-) diff --git a/backend/src/main/java/io/dataease/datasource/controller/DatasourceController.java b/backend/src/main/java/io/dataease/datasource/controller/DatasourceController.java index 6e5e6ba63e..9a1c734a7e 100644 --- a/backend/src/main/java/io/dataease/datasource/controller/DatasourceController.java +++ b/backend/src/main/java/io/dataease/datasource/controller/DatasourceController.java @@ -7,6 +7,7 @@ import io.dataease.base.domain.Datasource; import io.dataease.commons.utils.AuthUtils; import io.dataease.commons.utils.PageUtils; import io.dataease.commons.utils.Pager; +import io.dataease.controller.ResultHolder; import io.dataease.controller.request.DatasourceUnionRequest; import io.dataease.controller.sys.base.BaseGridRequest; import io.dataease.datasource.dto.DBTableDTO; @@ -41,6 +42,13 @@ public class DatasourceController { datasourceService.validate(datasource); } + @ApiOperation("验证数据源") + @GetMapping("/validate/{datasourceId}") + public ResultHolder validate(@PathVariable String datasourceId) { + return datasourceService.validate(datasourceId); + } + + @ApiOperation("查询当前用户数据源") @GetMapping("/list") public List getDatasourceList() throws Exception { diff --git a/backend/src/main/java/io/dataease/datasource/service/DatasourceService.java b/backend/src/main/java/io/dataease/datasource/service/DatasourceService.java index 18b54e7a02..5802ef3d8b 100644 --- a/backend/src/main/java/io/dataease/datasource/service/DatasourceService.java +++ b/backend/src/main/java/io/dataease/datasource/service/DatasourceService.java @@ -9,6 +9,7 @@ import io.dataease.commons.exception.DEException; import io.dataease.commons.utils.AuthUtils; import io.dataease.commons.utils.CommonThreadPool; import io.dataease.commons.utils.LogUtil; +import io.dataease.controller.ResultHolder; import io.dataease.controller.request.DatasourceUnionRequest; import io.dataease.controller.sys.base.BaseGridRequest; import io.dataease.controller.sys.base.ConditionEntity; @@ -126,13 +127,23 @@ public class DatasourceService { datasourceProvider.checkStatus(datasourceRequest); } - public void validate(String datasourceId) throws Exception { - if(StringUtils.isEmpty(datasourceId)){ - return; - } + public ResultHolder validate(String datasourceId) { Datasource datasource = datasourceMapper.selectByPrimaryKey(datasourceId); - validate(datasource); + if(datasource == null){ + return ResultHolder.error("Can not find datasource: "+ datasourceId); + } + try { + validate(datasource); + datasource.setStatus("Success"); + return ResultHolder.success("Success"); + }catch (Exception e){ + datasource.setStatus("Error"); + return ResultHolder.error("Datasource is invalid: " + e.getMessage()); + }finally { + datasourceMapper.updateByPrimaryKey(datasource); + } } + public List getSchema(Datasource datasource) throws Exception { DatasourceProvider datasourceProvider = ProviderFactory.getProvider(datasource.getType()); DatasourceRequest datasourceRequest = new DatasourceRequest(); diff --git a/frontend/src/api/system/datasource.js b/frontend/src/api/system/datasource.js index 2f069d430d..2cea64d8ff 100644 --- a/frontend/src/api/system/datasource.js +++ b/frontend/src/api/system/datasource.js @@ -50,6 +50,14 @@ export function validateDs(data) { }) } +export function validateDsById(datasourceId) { + return request({ + url: 'datasource/validate/' + datasourceId, + method: 'get', + loading: true + }) +} + export function getSchema(data) { return request({ url: 'datasource/getSchema/', diff --git a/frontend/src/views/system/datasource/form.vue b/frontend/src/views/system/datasource/form.vue index aa53f162ec..591b3bb2ca 100644 --- a/frontend/src/views/system/datasource/form.vue +++ b/frontend/src/views/system/datasource/form.vue @@ -100,7 +100,7 @@