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;
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<KeyValue> extendInfo;
/**
* 驱动配置
*/
private DriverConfig driverConfig;
}

View File

@ -115,18 +115,17 @@ public class DataSourceServiceImpl implements DataSourceService {
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());
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()));
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();
}

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.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;
}

View File

@ -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());
}
}