Support for custom drivers

This commit is contained in:
jipengfei-jpf
2023-06-22 20:30:26 +08:00
parent e67d3dae54
commit a25fae6cfc
112 changed files with 4399 additions and 279 deletions

View File

@ -6,9 +6,8 @@ package ai.chat2db.server.web.api.aspect;
import ai.chat2db.server.domain.api.model.DataSource;
import ai.chat2db.server.domain.api.service.DataSourceService;
import ai.chat2db.server.domain.support.enums.DbTypeEnum;
import ai.chat2db.server.domain.support.sql.ConnectInfo;
import ai.chat2db.server.domain.support.sql.DbhubContext;
import ai.chat2db.spi.sql.Chat2DBContext;
import ai.chat2db.spi.sql.ConnectInfo;
import ai.chat2db.server.tools.base.excption.SystemException;
import ai.chat2db.server.tools.base.wrapper.result.DataResult;
import ai.chat2db.server.web.api.controller.data.source.request.DataSourceBaseRequestInfo;
@ -45,17 +44,17 @@ public class ConnectionInfoHandler {
Long dataSourceId = ((DataSourceConsoleRequestInfo)param).getDataSourceId();
Long consoleId = ((DataSourceConsoleRequestInfo)param).getConsoleId();
String database = ((DataSourceConsoleRequestInfo)param).getDatabaseName();
DbhubContext.putContext(toInfo(dataSourceId, database, consoleId));
Chat2DBContext.putContext(toInfo(dataSourceId, database, consoleId));
} else if (param instanceof DataSourceBaseRequestInfo) {
Long dataSourceId = ((DataSourceBaseRequestInfo)param).getDataSourceId();
String database = ((DataSourceBaseRequestInfo)param).getDatabaseName();
DbhubContext.putContext(toInfo(dataSourceId, database));
Chat2DBContext.putContext(toInfo(dataSourceId, database));
}
}
}
return proceedingJoinPoint.proceed();
} finally {
DbhubContext.removeContext();
Chat2DBContext.removeContext();
}
}
@ -71,7 +70,7 @@ public class ConnectionInfoHandler {
connectInfo.setConsoleId(consoleId);
connectInfo.setDataSourceId(dataSourceId);
connectInfo.setPassword(dataSource.getPassword());
connectInfo.setDbType(DbTypeEnum.getByName(dataSource.getType()));
connectInfo.setDbType(dataSource.getType());
connectInfo.setUrl(dataSource.getUrl());
connectInfo.setDatabase(database);
connectInfo.setConsoleOwn(false);

View File

@ -4,10 +4,10 @@
*/
package ai.chat2db.server.web.api.controller;
import ai.chat2db.server.domain.support.sql.SSHManager;
import ai.chat2db.server.tools.base.wrapper.result.DataResult;
import ai.chat2db.server.tools.common.config.AliDbhubProperties;
import ai.chat2db.spi.sql.SSHManager;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.SpringApplication;

View File

@ -16,8 +16,7 @@ import ai.chat2db.server.domain.api.param.TableQueryParam;
import ai.chat2db.server.domain.api.service.ConfigService;
import ai.chat2db.server.domain.api.service.DataSourceService;
import ai.chat2db.server.domain.api.service.TableService;
import ai.chat2db.server.domain.support.enums.DbTypeEnum;
import ai.chat2db.server.domain.support.model.TableColumn;
import ai.chat2db.spi.model.TableColumn;
import ai.chat2db.server.tools.base.excption.BusinessException;
import ai.chat2db.server.tools.base.excption.CommonErrorEnum;
import ai.chat2db.server.tools.base.wrapper.result.DataResult;
@ -403,9 +402,9 @@ public class ChatController {
private String buildPrompt(ChatQueryRequest queryRequest) {
// 查询schema信息
DataResult<DataSource> dataResult = dataSourceService.queryById(queryRequest.getDataSourceId());
String dataSourceType = DbTypeEnum.MYSQL.getCode();
if (StringUtils.isNotBlank(dataSourceType)) {
dataSourceType = dataResult.getData().getType();
String dataSourceType = dataResult.getData().getType();
if (StringUtils.isBlank(dataSourceType)) {
dataSourceType = "MYSQL";
}
TableQueryParam queryParam = chatConverter.chat2tableQuery(queryRequest);
Map<String, List<TableColumn>> tableColumns = buildTableColumn(queryParam, queryRequest.getTableNames());

View File

@ -12,8 +12,8 @@ import ai.chat2db.server.domain.api.param.DataSourceSelector;
import ai.chat2db.server.domain.api.param.DataSourceUpdateParam;
import ai.chat2db.server.domain.api.service.ConsoleService;
import ai.chat2db.server.domain.api.service.DataSourceService;
import ai.chat2db.server.domain.support.model.Database;
import ai.chat2db.server.domain.support.sql.SSHManager;
import ai.chat2db.spi.model.Database;
import ai.chat2db.spi.sql.SSHManager;
import ai.chat2db.server.tools.base.wrapper.result.ActionResult;
import ai.chat2db.server.tools.base.wrapper.result.DataResult;
import ai.chat2db.server.tools.base.wrapper.result.ListResult;

View File

@ -5,7 +5,7 @@ import java.util.List;
import ai.chat2db.server.domain.api.model.DataSource;
import ai.chat2db.server.domain.api.param.DataSourceCreateParam;
import ai.chat2db.server.domain.api.param.DataSourcePreConnectParam;
import ai.chat2db.server.domain.support.model.Database;
import ai.chat2db.spi.model.Database;
import ai.chat2db.server.domain.api.param.ConsoleCloseParam;
import ai.chat2db.server.domain.api.param.ConsoleConnectParam;
import ai.chat2db.server.domain.api.param.DataSourcePageQueryParam;

View File

@ -4,7 +4,7 @@
*/
package ai.chat2db.server.web.api.controller.data.source.converter;
import ai.chat2db.server.domain.support.model.SSHInfo;
import ai.chat2db.spi.model.SSHInfo;
import ai.chat2db.server.web.api.controller.data.source.request.SSHTestRequest;
import org.mapstruct.Mapper;

View File

@ -1,14 +1,12 @@
package ai.chat2db.server.web.api.controller.data.source.request;
import java.util.List;
import java.util.Map;
import jakarta.validation.constraints.NotNull;
import ai.chat2db.server.domain.support.enums.DbTypeEnum;
import ai.chat2db.server.domain.support.model.KeyValue;
import ai.chat2db.server.domain.support.model.SSHInfo;
import ai.chat2db.server.domain.support.model.SSLInfo;
import ai.chat2db.spi.model.KeyValue;
import ai.chat2db.spi.model.SSHInfo;
import ai.chat2db.spi.model.SSLInfo;
import ai.chat2db.server.tools.base.enums.EnvTypeEnum;
import lombok.Data;

View File

@ -1,14 +1,12 @@
package ai.chat2db.server.web.api.controller.data.source.request;
import java.util.List;
import java.util.Map;
import jakarta.validation.constraints.NotNull;
import ai.chat2db.server.domain.support.enums.DbTypeEnum;
import ai.chat2db.server.domain.support.model.KeyValue;
import ai.chat2db.server.domain.support.model.SSHInfo;
import ai.chat2db.server.domain.support.model.SSLInfo;
import ai.chat2db.spi.model.KeyValue;
import ai.chat2db.spi.model.SSHInfo;
import ai.chat2db.spi.model.SSLInfo;
import lombok.Data;
@ -43,8 +41,7 @@ public class DataSourceTestRequest {
private String password;
/**
* 连接类型
* @see DbTypeEnum
* 数据库连接类型
*/
@NotNull
private String type;

View File

@ -1,14 +1,12 @@
package ai.chat2db.server.web.api.controller.data.source.request;
import java.util.List;
import java.util.Map;
import jakarta.validation.constraints.NotNull;
import ai.chat2db.server.domain.support.enums.DbTypeEnum;
import ai.chat2db.server.domain.support.model.KeyValue;
import ai.chat2db.server.domain.support.model.SSHInfo;
import ai.chat2db.server.domain.support.model.SSLInfo;
import ai.chat2db.spi.model.KeyValue;
import ai.chat2db.spi.model.SSHInfo;
import ai.chat2db.spi.model.SSLInfo;
import ai.chat2db.server.tools.base.enums.EnvTypeEnum;
import lombok.Data;
@ -49,7 +47,6 @@ public class DataSourceUpdateRequest {
/**
* 连接类型
* @see DbTypeEnum
*/
private String type;

View File

@ -1,11 +1,10 @@
package ai.chat2db.server.web.api.controller.data.source.vo;
import java.util.List;
import java.util.Map;
import ai.chat2db.server.domain.support.model.KeyValue;
import ai.chat2db.server.domain.support.model.SSHInfo;
import ai.chat2db.server.domain.support.model.SSLInfo;
import ai.chat2db.spi.model.KeyValue;
import ai.chat2db.spi.model.SSHInfo;
import ai.chat2db.spi.model.SSLInfo;
import lombok.Data;

View File

@ -2,7 +2,6 @@ package ai.chat2db.server.web.api.controller.operation.log.request;
import jakarta.validation.constraints.NotNull;
import ai.chat2db.server.domain.support.enums.DbTypeEnum;
import ai.chat2db.server.web.api.controller.data.source.request.DataSourceBaseRequest;
import lombok.Data;
@ -22,7 +21,6 @@ public class OperationLogCreateRequest extends DataSourceBaseRequest {
/**
* ddl类型
* @see DbTypeEnum
*/
@NotNull
private String type;

View File

@ -1,6 +1,5 @@
package ai.chat2db.server.web.api.controller.operation.log.vo;
import ai.chat2db.server.domain.support.enums.DbTypeEnum;
import lombok.Data;
@ -44,7 +43,6 @@ public class OperationLogVO {
/**
* ddl语言类型
* @see DbTypeEnum
*/
private String type;
}

View File

@ -2,7 +2,6 @@ package ai.chat2db.server.web.api.controller.operation.saved.request;
import jakarta.validation.constraints.NotNull;
import ai.chat2db.server.domain.support.enums.DbTypeEnum;
import ai.chat2db.server.tools.base.enums.StatusEnum;
import ai.chat2db.server.web.api.controller.data.source.request.DataSourceBaseRequest;
@ -29,8 +28,7 @@ public class OperationCreateRequest extends DataSourceBaseRequest {
private String status;
/**
* ddl类型
* @see DbTypeEnum
* DB TYPE
*/
@NotNull
private String type;

View File

@ -1,6 +1,5 @@
package ai.chat2db.server.web.api.controller.operation.saved.vo;
import ai.chat2db.server.domain.support.enums.DbTypeEnum;
import lombok.Data;
@ -49,7 +48,6 @@ public class OperationVO {
/**
* ddl语言类型
* @see DbTypeEnum
*/
private String type;

View File

@ -13,10 +13,10 @@ import ai.chat2db.server.domain.api.param.TableSelector;
import ai.chat2db.server.domain.api.service.DatabaseService;
import ai.chat2db.server.domain.api.service.DlTemplateService;
import ai.chat2db.server.domain.api.service.TableService;
import ai.chat2db.server.domain.support.model.Schema;
import ai.chat2db.server.domain.support.model.Table;
import ai.chat2db.server.domain.support.model.TableColumn;
import ai.chat2db.server.domain.support.model.TableIndex;
import ai.chat2db.spi.model.Schema;
import ai.chat2db.spi.model.Table;
import ai.chat2db.spi.model.TableColumn;
import ai.chat2db.spi.model.TableIndex;
import ai.chat2db.server.tools.base.wrapper.result.ActionResult;
import ai.chat2db.server.tools.base.wrapper.result.DataResult;
import ai.chat2db.server.tools.base.wrapper.result.ListResult;

View File

@ -4,7 +4,7 @@ import java.util.List;
import ai.chat2db.server.domain.api.param.DlExecuteParam;
import ai.chat2db.server.domain.api.service.DlTemplateService;
import ai.chat2db.server.domain.support.model.ExecuteResult;
import ai.chat2db.spi.model.ExecuteResult;
import ai.chat2db.server.tools.base.wrapper.result.ActionResult;
import ai.chat2db.server.tools.base.wrapper.result.DataResult;
import ai.chat2db.server.tools.base.wrapper.result.ListResult;

View File

@ -8,12 +8,12 @@ import ai.chat2db.server.domain.api.param.DropParam;
import ai.chat2db.server.domain.api.param.ShowCreateTableParam;
import ai.chat2db.server.domain.api.param.TablePageQueryParam;
import ai.chat2db.server.domain.api.param.TableQueryParam;
import ai.chat2db.server.domain.support.model.ExecuteResult;
import ai.chat2db.server.domain.support.model.Schema;
import ai.chat2db.server.domain.support.model.Sql;
import ai.chat2db.server.domain.support.model.Table;
import ai.chat2db.server.domain.support.model.TableColumn;
import ai.chat2db.server.domain.support.model.TableIndex;
import ai.chat2db.spi.model.ExecuteResult;
import ai.chat2db.spi.model.Schema;
import ai.chat2db.spi.model.Sql;
import ai.chat2db.spi.model.Table;
import ai.chat2db.spi.model.TableColumn;
import ai.chat2db.spi.model.TableIndex;
import ai.chat2db.server.web.api.controller.rdb.request.DdlCountRequest;
import ai.chat2db.server.web.api.controller.rdb.request.DdlExportRequest;
import ai.chat2db.server.web.api.controller.rdb.request.DdlRequest;

View File

@ -2,7 +2,7 @@ package ai.chat2db.server.web.api.controller.rdb.request;
import java.util.List;
import ai.chat2db.server.domain.support.enums.IndexTypeEnum;
import ai.chat2db.spi.enums.IndexTypeEnum;
import ai.chat2db.server.web.api.controller.rdb.vo.ColumnVO;
import lombok.AllArgsConstructor;

View File

@ -1,6 +1,6 @@
package ai.chat2db.server.web.api.controller.rdb.vo;
import ai.chat2db.server.domain.support.enums.ColumnTypeEnum;
import ai.chat2db.spi.enums.ColumnTypeEnum;
import lombok.AllArgsConstructor;
import lombok.Data;

View File

@ -2,7 +2,6 @@ package ai.chat2db.server.web.api.controller.rdb.vo;
import java.util.List;
import ai.chat2db.server.domain.support.enums.SqlTypeEnum;
import lombok.Data;
@ -47,7 +46,6 @@ public class ExecuteResultVO {
/**
* sql 类型
*
* @see SqlTypeEnum
*/
private String sqlType;

View File

@ -1,6 +1,6 @@
package ai.chat2db.server.web.api.controller.rdb.vo;
import ai.chat2db.server.domain.support.enums.DataTypeEnum;
import ai.chat2db.spi.enums.DataTypeEnum;
import lombok.AllArgsConstructor;
import lombok.Data;

View File

@ -2,7 +2,7 @@ package ai.chat2db.server.web.api.controller.rdb.vo;
import java.util.List;
import ai.chat2db.server.domain.support.enums.IndexTypeEnum;
import ai.chat2db.spi.enums.IndexTypeEnum;
import lombok.Data;