diff --git a/chat2db-server/chat2db-server-domain/chat2db-server-domain-api/src/main/java/ai/chat2db/server/domain/api/param/DataSourceTestParam.java b/chat2db-server/chat2db-server-domain/chat2db-server-domain-api/src/main/java/ai/chat2db/server/domain/api/param/DataSourceTestParam.java index 38e13289..4f49978e 100644 --- a/chat2db-server/chat2db-server-domain/chat2db-server-domain-api/src/main/java/ai/chat2db/server/domain/api/param/DataSourceTestParam.java +++ b/chat2db-server/chat2db-server-domain/chat2db-server-domain-api/src/main/java/ai/chat2db/server/domain/api/param/DataSourceTestParam.java @@ -1,19 +1,17 @@ package ai.chat2db.server.domain.api.param; +import java.util.List; +import ai.chat2db.spi.config.DriverConfig; import ai.chat2db.spi.model.KeyValue; import ai.chat2db.spi.model.SSHInfo; import ai.chat2db.spi.model.SSLInfo; import jakarta.validation.constraints.NotNull; - - import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; import lombok.experimental.SuperBuilder; -import java.util.List; - /** * 数据源测试参数 * @@ -89,4 +87,10 @@ public class DataSourceTestParam { * 扩展信息 */ private List extendInfo; + + + /** + * 驱动配置 + */ + private DriverConfig driverConfig; } diff --git a/chat2db-server/chat2db-server-domain/chat2db-server-domain-core/src/main/java/ai/chat2db/server/domain/core/impl/DataSourceServiceImpl.java b/chat2db-server/chat2db-server-domain/chat2db-server-domain-core/src/main/java/ai/chat2db/server/domain/core/impl/DataSourceServiceImpl.java index 56f0ac35..fd91220a 100644 --- a/chat2db-server/chat2db-server-domain/chat2db-server-domain-core/src/main/java/ai/chat2db/server/domain/core/impl/DataSourceServiceImpl.java +++ b/chat2db-server/chat2db-server-domain/chat2db-server-domain-core/src/main/java/ai/chat2db/server/domain/core/impl/DataSourceServiceImpl.java @@ -114,19 +114,18 @@ public class DataSourceServiceImpl implements DataSourceService { @Override public ActionResult preConnect(DataSourcePreConnectParam param) { DataSourceTestParam testParam - = dataSourceConverter.param2param(param); - -// todo -// DriverConfig driverConfig = new DriverConfig(); -// driverConfig.setJdbcDriver(param.getDriver()); -// driverConfig.setJdbcDriverClass(param.getDriver()); - DriverConfig driverConfig = Chat2DBContext.getDefaultDriverConfig(param.getType()); + = dataSourceConverter.param2param(param); + DriverConfig driverConfig = testParam.getDriverConfig(); + if (driverConfig == null || !driverConfig.notEmpty()) { + driverConfig = Chat2DBContext.getDefaultDriverConfig(param.getType()); + } DataSourceConnect dataSourceConnect = JdbcUtils.testConnect(testParam.getUrl(), testParam.getHost(), - testParam.getPort(), - testParam.getUsername(), testParam.getPassword(), testParam.getDbType(), - driverConfig, param.getSsh(), KeyValue.toMap(param.getExtendInfo())); + testParam.getPort(), + testParam.getUsername(), testParam.getPassword(), testParam.getDbType(), + driverConfig, param.getSsh(), KeyValue.toMap(param.getExtendInfo())); if (BooleanUtils.isNotTrue(dataSourceConnect.getSuccess())) { - return ActionResult.fail(dataSourceConnect.getMessage(), dataSourceConnect.getDescription(), dataSourceConnect.getErrorDetail()); + return ActionResult.fail(dataSourceConnect.getMessage(), dataSourceConnect.getDescription(), + dataSourceConnect.getErrorDetail()); } return ActionResult.isSuccess(); } diff --git a/chat2db-server/chat2db-server-web/chat2db-server-web-api/src/main/java/ai/chat2db/server/web/api/aspect/ConnectionInfoHandler.java b/chat2db-server/chat2db-server-web/chat2db-server-web-api/src/main/java/ai/chat2db/server/web/api/aspect/ConnectionInfoHandler.java index cef6ec81..89e39bd7 100644 --- a/chat2db-server/chat2db-server-web/chat2db-server-web-api/src/main/java/ai/chat2db/server/web/api/aspect/ConnectionInfoHandler.java +++ b/chat2db-server/chat2db-server-web/chat2db-server-web-api/src/main/java/ai/chat2db/server/web/api/aspect/ConnectionInfoHandler.java @@ -7,6 +7,7 @@ import ai.chat2db.server.tools.base.wrapper.result.DataResult; import ai.chat2db.server.tools.common.exception.ParamBusinessException; import ai.chat2db.server.web.api.controller.data.source.request.DataSourceBaseRequestInfo; import ai.chat2db.server.web.api.controller.data.source.request.DataSourceConsoleRequestInfo; +import ai.chat2db.spi.config.DriverConfig; import ai.chat2db.spi.sql.Chat2DBContext; import ai.chat2db.spi.sql.ConnectInfo; import lombok.extern.slf4j.Slf4j; @@ -28,7 +29,6 @@ public class ConnectionInfoHandler { @Autowired private DataSourceService dataSourceService; - @Around("within(@ai.chat2db.server.web.api.aspect.ConnectionInfoAspect *)") public Object connectionInfoHandler(ProceedingJoinPoint proceedingJoinPoint) throws Throwable { try { @@ -78,6 +78,10 @@ public class ConnectionInfoHandler { connectInfo.setUrl(dataSource.getUrl()); connectInfo.setPort(dataSource.getPort() != null ? Integer.parseInt(dataSource.getPort()) : null); connectInfo.setHost(dataSource.getHost()); + DriverConfig driverConfig = dataSource.getDriverConfig(); + if (driverConfig != null && driverConfig.notEmpty()) { + connectInfo.setDriverConfig(driverConfig); + } return connectInfo; } diff --git a/chat2db-server/chat2db-spi/src/main/java/ai/chat2db/spi/config/DriverConfig.java b/chat2db-server/chat2db-spi/src/main/java/ai/chat2db/spi/config/DriverConfig.java index 39be1918..03e6bdda 100644 --- a/chat2db-server/chat2db-spi/src/main/java/ai/chat2db/spi/config/DriverConfig.java +++ b/chat2db-server/chat2db-spi/src/main/java/ai/chat2db/spi/config/DriverConfig.java @@ -4,6 +4,7 @@ package ai.chat2db.spi.config; import java.util.List; import lombok.Data; +import org.apache.commons.lang3.StringUtils; /** * @author jipengfei @@ -38,4 +39,10 @@ public class DriverConfig { * 自定义 */ private boolean custom; + + + public boolean notEmpty() { + return StringUtils.isNotBlank(getJdbcDriver()) && StringUtils.isNotBlank( + getJdbcDriverClass()); + } } \ No newline at end of file