add custom jdbc

This commit is contained in:
jipengfei-jpf
2023-07-19 21:40:37 +08:00
parent 7be9d37981
commit d0879fa06f
4 changed files with 30 additions and 16 deletions

View File

@ -1,19 +1,17 @@
package ai.chat2db.server.domain.api.param; 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.KeyValue;
import ai.chat2db.spi.model.SSHInfo; import ai.chat2db.spi.model.SSHInfo;
import ai.chat2db.spi.model.SSLInfo; import ai.chat2db.spi.model.SSLInfo;
import jakarta.validation.constraints.NotNull; import jakarta.validation.constraints.NotNull;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Data; import lombok.Data;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder; import lombok.experimental.SuperBuilder;
import java.util.List;
/** /**
* 数据源测试参数 * 数据源测试参数
* *
@ -89,4 +87,10 @@ public class DataSourceTestParam {
* 扩展信息 * 扩展信息
*/ */
private List<KeyValue> extendInfo; private List<KeyValue> extendInfo;
/**
* 驱动配置
*/
private DriverConfig driverConfig;
} }

View File

@ -115,18 +115,17 @@ public class DataSourceServiceImpl implements DataSourceService {
public ActionResult preConnect(DataSourcePreConnectParam param) { public ActionResult preConnect(DataSourcePreConnectParam param) {
DataSourceTestParam testParam DataSourceTestParam testParam
= dataSourceConverter.param2param(param); = dataSourceConverter.param2param(param);
DriverConfig driverConfig = testParam.getDriverConfig();
// todo if (driverConfig == null || !driverConfig.notEmpty()) {
// DriverConfig driverConfig = new DriverConfig(); driverConfig = Chat2DBContext.getDefaultDriverConfig(param.getType());
// driverConfig.setJdbcDriver(param.getDriver()); }
// driverConfig.setJdbcDriverClass(param.getDriver());
DriverConfig driverConfig = Chat2DBContext.getDefaultDriverConfig(param.getType());
DataSourceConnect dataSourceConnect = JdbcUtils.testConnect(testParam.getUrl(), testParam.getHost(), DataSourceConnect dataSourceConnect = JdbcUtils.testConnect(testParam.getUrl(), testParam.getHost(),
testParam.getPort(), testParam.getPort(),
testParam.getUsername(), testParam.getPassword(), testParam.getDbType(), testParam.getUsername(), testParam.getPassword(), testParam.getDbType(),
driverConfig, param.getSsh(), KeyValue.toMap(param.getExtendInfo())); driverConfig, param.getSsh(), KeyValue.toMap(param.getExtendInfo()));
if (BooleanUtils.isNotTrue(dataSourceConnect.getSuccess())) { 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(); return ActionResult.isSuccess();
} }

View File

@ -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.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.DataSourceBaseRequestInfo;
import ai.chat2db.server.web.api.controller.data.source.request.DataSourceConsoleRequestInfo; 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.Chat2DBContext;
import ai.chat2db.spi.sql.ConnectInfo; import ai.chat2db.spi.sql.ConnectInfo;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
@ -28,7 +29,6 @@ public class ConnectionInfoHandler {
@Autowired @Autowired
private DataSourceService dataSourceService; private DataSourceService dataSourceService;
@Around("within(@ai.chat2db.server.web.api.aspect.ConnectionInfoAspect *)") @Around("within(@ai.chat2db.server.web.api.aspect.ConnectionInfoAspect *)")
public Object connectionInfoHandler(ProceedingJoinPoint proceedingJoinPoint) throws Throwable { public Object connectionInfoHandler(ProceedingJoinPoint proceedingJoinPoint) throws Throwable {
try { try {
@ -78,6 +78,10 @@ public class ConnectionInfoHandler {
connectInfo.setUrl(dataSource.getUrl()); connectInfo.setUrl(dataSource.getUrl());
connectInfo.setPort(dataSource.getPort() != null ? Integer.parseInt(dataSource.getPort()) : null); connectInfo.setPort(dataSource.getPort() != null ? Integer.parseInt(dataSource.getPort()) : null);
connectInfo.setHost(dataSource.getHost()); connectInfo.setHost(dataSource.getHost());
DriverConfig driverConfig = dataSource.getDriverConfig();
if (driverConfig != null && driverConfig.notEmpty()) {
connectInfo.setDriverConfig(driverConfig);
}
return connectInfo; return connectInfo;
} }

View File

@ -4,6 +4,7 @@ package ai.chat2db.spi.config;
import java.util.List; import java.util.List;
import lombok.Data; import lombok.Data;
import org.apache.commons.lang3.StringUtils;
/** /**
* @author jipengfei * @author jipengfei
@ -38,4 +39,10 @@ public class DriverConfig {
* 自定义 * 自定义
*/ */
private boolean custom; private boolean custom;
public boolean notEmpty() {
return StringUtils.isNotBlank(getJdbcDriver()) && StringUtils.isNotBlank(
getJdbcDriverClass());
}
} }