support add service name

This commit is contained in:
SwallowGG
2023-11-09 17:29:36 +08:00
parent 1b36648819
commit c29db6aeab
14 changed files with 744 additions and 11 deletions

View File

@ -0,0 +1,145 @@
//package ai.chat2db.plugin.oceanbase.builder;
//
//import ai.chat2db.plugin.oceanbase.type.OceanBaseColumnTypeEnum;
//import ai.chat2db.plugin.oceanbase.type.OceanBaseIndexTypeEnum;
//import ai.chat2db.spi.SqlBuilder;
//import ai.chat2db.spi.jdbc.DefaultSqlBuilder;
//import ai.chat2db.spi.model.*;
//import org.apache.commons.lang3.StringUtils;
//
//public class OceanBaseSqlBuilder extends DefaultSqlBuilder implements SqlBuilder {
//
// @Override
// public String buildCreateTableSql(Table table) {
// StringBuilder script = new StringBuilder();
// script.append("CREATE TABLE ");
// if(StringUtils.isNotBlank(table.getDatabaseName())) {
// script.append("`").append(table.getName()).append("`").append(".");
// }
// script.append("`").append(table.getName()).append("`").append(" (").append("\n");
//
// // append column
// for (TableColumn column : table.getColumnList()) {
// if(StringUtils.isBlank(column.getName())|| StringUtils.isBlank(column.getColumnType())){
// continue;
// }
// OceanBaseColumnTypeEnum typeEnum = OceanBaseColumnTypeEnum.getByType(column.getColumnType());
// script.append("\t").append(typeEnum.buildCreateColumnSql(column)).append(",\n");
// }
//
// // append primary key and index
// for (TableIndex tableIndex : table.getIndexList()) {
// if(StringUtils.isBlank(tableIndex.getName())|| StringUtils.isBlank(tableIndex.getType())){
// continue;
// }
// OceanBaseIndexTypeEnum mysqlIndexTypeEnum = OceanBaseIndexTypeEnum.getByType(tableIndex.getType());
// script.append("\t").append("").append(mysqlIndexTypeEnum.buildIndexScript(tableIndex)).append(",\n");
// }
//
// script = new StringBuilder(script.substring(0, script.length() - 2));
// script.append("\n)");
//
//
// if (StringUtils.isNotBlank(table.getEngine())) {
// script.append(" ENGINE=").append(table.getEngine());
// }
//
// if (StringUtils.isNotBlank(table.getCharset())) {
// script.append(" DEFAULT CHARACTER SET=").append(table.getCharset());
// }
//
// if (StringUtils.isNotBlank(table.getCollate())) {
// script.append(" COLLATE=").append(table.getCollate());
// }
//
// if (table.getIncrementValue() != null) {
// script.append(" AUTO_INCREMENT=").append(table.getIncrementValue());
// }
//
// if (StringUtils.isNotBlank(table.getComment())) {
// script.append(" COMMENT='").append(table.getComment()).append("'");
// }
//
// if (StringUtils.isNotBlank(table.getPartition())) {
// script.append(" \n").append(table.getPartition());
// }
// script.append(";");
//
// return script.toString();
// }
//
// @Override
// public String buildModifyTaleSql(Table oldTable, Table newTable) {
// StringBuilder script = new StringBuilder();
// script.append("ALTER TABLE ");
// if(StringUtils.isNotBlank(oldTable.getDatabaseName())) {
// script.append("`").append(oldTable.getDatabaseName()).append("`").append(".");
// }
// script.append("`").append(oldTable.getName()).append("`").append("\n");
// if (!StringUtils.equalsIgnoreCase(oldTable.getName(), newTable.getName())) {
// script.append("\t").append("RENAME TO ").append("`").append(newTable.getName()).append("`").append(",\n");
// }
// if (!StringUtils.equalsIgnoreCase(oldTable.getComment(), newTable.getComment())) {
// script.append("\t").append("COMMENT=").append("'").append(newTable.getComment()).append("'").append(",\n");
// }
// if (oldTable.getIncrementValue() != newTable.getIncrementValue()) {
// script.append("\t").append("AUTO_INCREMENT=").append(newTable.getIncrementValue()).append(",\n");
// }
//
// // append modify column
// for (TableColumn tableColumn : newTable.getColumnList()) {
// if (StringUtils.isNotBlank(tableColumn.getEditStatus()) && StringUtils.isNotBlank(tableColumn.getColumnType())&& StringUtils.isNotBlank(tableColumn.getName())){
// OceanBaseColumnTypeEnum typeEnum = OceanBaseColumnTypeEnum.getByType(tableColumn.getColumnType());
// script.append("\t").append(typeEnum.buildModifyColumn(tableColumn)).append(",\n");
// }
// }
//
// // append modify index
// for (TableIndex tableIndex : newTable.getIndexList()) {
// if (StringUtils.isNotBlank(tableIndex.getEditStatus()) && StringUtils.isNotBlank(tableIndex.getType())) {
// OceanBaseIndexTypeEnum mysqlIndexTypeEnum = OceanBaseIndexTypeEnum.getByType(tableIndex.getType());
// script.append("\t").append(mysqlIndexTypeEnum.buildModifyIndex(tableIndex)).append(",\n");
// }
// }
// if(script.length()>2) {
// script = new StringBuilder(script.substring(0, script.length() - 2));
// script.append(";");
// }
//
// return script.toString();
// }
//
//
//
// @Override
// public String pageLimit(String sql, int offset, int pageNo, int pageSize) {
// StringBuilder sqlBuilder = new StringBuilder(sql.length() + 14);
// sqlBuilder.append(sql);
// if (offset == 0) {
// sqlBuilder.append("\n LIMIT ");
// sqlBuilder.append(pageSize);
// } else {
// sqlBuilder.append("\n LIMIT ");
// sqlBuilder.append(offset);
// sqlBuilder.append(",");
// sqlBuilder.append(pageSize);
// }
// return sqlBuilder.toString();
// }
//
//
//
//
// @Override
// public String buildCreateDatabaseSql(Database database) {
// StringBuilder sqlBuilder = new StringBuilder();
// sqlBuilder.append("CREATE DATABASE `"+database.getName()+"`");
// if (StringUtils.isNotBlank(database.getCharset())) {
// sqlBuilder.append(" DEFAULT CHARACTER SET=").append(database.getCharset());
// }
// if (StringUtils.isNotBlank(database.getCollation())) {
// sqlBuilder.append(" COLLATE=").append(database.getCollation());
// }
// return sqlBuilder.toString();
// }
//}

View File

@ -0,0 +1,336 @@
//package ai.chat2db.plugin.oceanbase.type;
//
//import ai.chat2db.spi.ColumnBuilder;
//import ai.chat2db.spi.enums.EditStatus;
//import ai.chat2db.spi.model.ColumnType;
//import ai.chat2db.spi.model.TableColumn;
//import com.google.common.collect.Maps;
//import org.apache.commons.lang3.StringUtils;
//
//import java.util.Arrays;
//import java.util.List;
//import java.util.Map;
//
//public enum OceanBaseColumnTypeEnum implements ColumnBuilder {
//
// BIT("BIT", true, false, true, false, false, false, true, true, false, false),
//
// TINYINT("TINYINT", false, false, true, true, false, false, true, true, false, false),
//
// TINYINT_UNSIGNED("TINYINT UNSIGNED", false, false, true, true, false, false, true, true, false, false),
//
// SMALLINT("SMALLINT", false, false, true, true, false, false, true, true, false, false),
//
// SMALLINT_UNSIGNED("SMALLINT UNSIGNED", false, false, true, true, false, false, true, true, false, false),
//
// MEDIUMINT("MEDIUMINT", false, false, true, true, false, false, true, true, false, false),
//
// MEDIUMINT_UNSIGNED("MEDIUMINT UNSIGNED", false, false, true, true, false, false, true, true, false, false),
//
// INT("INT", false, false, true, true, false, false, true, true, false, false),
//
//
// INT_UNSIGNED("INT UNSIGNED", false, false, true, true, false, false, true, true, false, false),
//
// BIGINT("BIGINT", false, false, true, true, false, false, true, true, false, false),
//
//
// BIGINT_UNSIGNED("BIGINT UNSIGNED", false, false, true, true, false, false, true, true, false, false),
//
//
// DECIMAL("DECIMAL", true, true, true, false, false, false, true, true, false, false),
//
// DECIMAL_UNSIGNED("DECIMAL UNSIGNED", true, true, true, false, false, false, true, true, false, false),
//
//
// FLOAT("FLOAT", true, true, true, false, false, false, true, true, false, false),
//
// FLOAT_UNSIGNED("FLOAT UNSIGNED", true, true, true, false, false, false, true, true, false, false),
//
// DOUBLE("DOUBLE", true, true, true, false, false, false, true, true, false, false),
//
// DOUBLE_UNSIGNED("DOUBLE UNSIGNED", true, true, true, false, false, false, true, true, false, false),
// DATE("DATE", false, false, true, false, false, false, true, true, false, false),
// DATETIME("DATETIME", true, false, true, false, false, false, true, true, true, false),
//
// TIMESTAMP("TIMESTAMP", true, false, true, false, false, false, true, true, true, false),
// TIME("TIME", true, false, true, false, false, false, true, true, false, false),
// YEAR("YEAR", false, false, true, false, false, false, true, true, false, false),
// CHAR("CHAR", true, false, true, false, true, true, true, true, false, false),
//
// VARCHAR("VARCHAR", true, false, true, false, true, true, true, true, false, false),
//
// BINARY("BINARY", true, false, true, false, false, false, true, true, false, false),
//
// VARBINARY("VARBINARY", true, false, true, false, false, false, true, true, false, false),
//
// TINYBLOB("TINYBLOB", false, false, true, false, false, false, true, false, false, false),
//
// BLOB("BLOB", false, false, true, false, false, false, true, false, false, false),
//
// MEDIUMBLOB("MEDIUMBLOB", false, false, true, false, false, false, true, false, false, false),
//
// LONGBLOB("LONGBLOB", false, false, true, false, false, false, true, false, false, false),
//
// TINYTEXT("TINYTEXT", false, false, true, false, true, true, true, false, false, false),
//
// TEXT("TEXT", false, false, true, false, true, true, true, false, false, false),
//
// MEDIUMTEXT("MEDIUMTEXT", false, false, true, false, true, true, true, false, false, false),
//
// LONGTEXT("LONGTEXT", false, false, true, false, true, true, true, false, false, false),
//
//
// ENUM("ENUM", false, false, true, false, true, true, true, true, true, true),
//
//
// BOOL("BOOL", false, false, true, true, false, false, true, true, false, false),
//
// INTEGER("INTEGER", false, false, true, true, false, false, true, true, false, false),
//
// INTEGER_UNSIGNED("INTEGER UNSIGNED", false, false, true, true, false, false, true, true, false, false),
//
// REAL("REAL", true, true, true, false, false, false, true, true, false, false),
//
// SET("SET", false, false, true, false, true, true, true, true, true, true),
//
//
// GEOMETRY("GEOMETRY", false, false, true, false, false, false, true, false, false, false),
//
// POINT("POINT", false, false, true, false, false, false, true, false, false, false),
//
// LINESTRING("LINESTRING", false, false, true, false, false, false, true, false, false, false),
//
// POLYGON("POLYGON", false, false, true, false, false, false, true, false, false, false),
//
// MULTIPOINT("MULTIPOINT", false, false, true, false, false, false, true, false, false, false),
//
// MULTILINESTRING("MULTILINESTRING", false, false, true, false, false, false, true, false, false, false),
//
// MULTIPOLYGON("MULTIPOLYGON", false, false, true, false, false, false, true, false, false, false),
//
// GEOMETRYCOLLECTION("GEOMETRYCOLLECTION", false, false, true, false, false, false, true, false, false, false),
//
// JSON("JSON", false, false, true, false, false, false, true, false, false, false);
//
// private ColumnType columnType;
//
// public static OceanBaseColumnTypeEnum getByType(String dataType) {
// return COLUMN_TYPE_MAP.get(dataType.toUpperCase());
// }
//
// public ColumnType getColumnType() {
// return columnType;
// }
//
//
// OceanBaseColumnTypeEnum(String dataTypeName, boolean supportLength, boolean supportScale, boolean supportNullable, boolean supportAutoIncrement, boolean supportCharset, boolean supportCollation, boolean supportComments, boolean supportDefaultValue, boolean supportExtent, boolean supportValue) {
// this.columnType = new ColumnType(dataTypeName, supportLength, supportScale, supportNullable, supportAutoIncrement, supportCharset, supportCollation, supportComments, supportDefaultValue, supportExtent,supportValue,false);
// }
//
// private static Map<String, OceanBaseColumnTypeEnum> COLUMN_TYPE_MAP = Maps.newHashMap();
//
// static {
// for (OceanBaseColumnTypeEnum value : OceanBaseColumnTypeEnum.values()) {
// COLUMN_TYPE_MAP.put(value.getColumnType().getTypeName(), value);
// }
// }
//
//
// @Override
// public String buildCreateColumnSql(TableColumn column) {
// OceanBaseColumnTypeEnum type = COLUMN_TYPE_MAP.get(column.getColumnType().toUpperCase());
// if (type == null) {
// return "";
// }
// StringBuilder script = new StringBuilder();
//
// script.append("`").append(column.getName()).append("`").append(" ");
//
// script.append(buildDataType(column, type)).append(" ");
//
// script.append(buildCharset(column,type)).append(" ");
//
// script.append(buildCollation(column,type)).append(" ");
//
// script.append(buildNullable(column,type)).append(" ");
//
// script.append(buildDefaultValue(column,type)).append(" ");
//
// script.append(buildExt(column,type)).append(" ");
//
// script.append(buildAutoIncrement(column,type)).append(" ");
//
// script.append(buildComment(column,type)).append(" ");
//
// return script.toString();
// }
//
// private String buildCharset(TableColumn column, OceanBaseColumnTypeEnum type) {
// if(!type.getColumnType().isSupportCharset() || StringUtils.isEmpty(column.getCharSetName())){
// return "";
// }
// return StringUtils.join("CHARACTER SET ",column.getCharSetName());
// }
//
// private String buildCollation(TableColumn column, OceanBaseColumnTypeEnum type) {
// if(!type.getColumnType().isSupportCollation() || StringUtils.isEmpty(column.getCollationName())){
// return "";
// }
// return StringUtils.join("COLLATE ",column.getCollationName());
// }
//
// @Override
// public String buildModifyColumn(TableColumn tableColumn) {
//
// if (EditStatus.DELETE.name().equals(tableColumn.getEditStatus())) {
// return StringUtils.join("DROP COLUMN `", tableColumn.getName() + "`");
// }
// if (EditStatus.ADD.name().equals(tableColumn.getEditStatus())) {
// return StringUtils.join("ADD COLUMN ", buildCreateColumnSql(tableColumn));
// }
// if (EditStatus.MODIFY.name().equals(tableColumn.getEditStatus())) {
// if (!StringUtils.equalsIgnoreCase(tableColumn.getOldName(), tableColumn.getName())) {
// return StringUtils.join("CHANGE COLUMN `", tableColumn.getOldName(), "` ", buildCreateColumnSql(tableColumn));
// } else {
// return StringUtils.join("MODIFY COLUMN ", buildCreateColumnSql(tableColumn));
// }
// }
// return "";
// }
//
// private String buildAutoIncrement(TableColumn column, OceanBaseColumnTypeEnum type) {
// if(!type.getColumnType().isSupportAutoIncrement()){
// return "";
// }
// if (column.getAutoIncrement() != null && column.getAutoIncrement()) {
// return "AUTO_INCREMENT";
// }
// return "";
// }
//
// private String buildComment(TableColumn column, OceanBaseColumnTypeEnum type) {
// if(!type.columnType.isSupportComments() || StringUtils.isEmpty(column.getComment())){
// return "";
// }
// return StringUtils.join("COMMENT '",column.getComment(),"'");
// }
//
// private String buildExt(TableColumn column, OceanBaseColumnTypeEnum type) {
// if(!type.columnType.isSupportExtent() || StringUtils.isEmpty(column.getExtent())){
// return "";
// }
// return column.getComment();
// }
//
// private String buildDefaultValue(TableColumn column, OceanBaseColumnTypeEnum type) {
// if(!type.getColumnType().isSupportDefaultValue() || StringUtils.isEmpty(column.getDefaultValue())){
// return "";
// }
//
// if("EMPTY_STRING".equalsIgnoreCase(column.getDefaultValue().trim())){
// return StringUtils.join("DEFAULT ''");
// }
//
// if("NULL".equalsIgnoreCase(column.getDefaultValue().trim())){
// return StringUtils.join("DEFAULT NULL");
// }
//
// if(Arrays.asList(CHAR,VARCHAR,BINARY,VARBINARY, SET,ENUM).contains(type)){
// return StringUtils.join("DEFAULT '",column.getDefaultValue(),"'");
// }
//
// if(Arrays.asList(DATE,TIME,YEAR).contains(type)){
// return StringUtils.join("DEFAULT '",column.getDefaultValue(),"'");
// }
//
// if(Arrays.asList(DATETIME,TIMESTAMP).contains(type)){
// if("CURRENT_TIMESTAMP".equalsIgnoreCase(column.getDefaultValue().trim())){
// return StringUtils.join("DEFAULT ",column.getDefaultValue());
// }
// return StringUtils.join("DEFAULT '",column.getDefaultValue(),"'");
// }
//
// return StringUtils.join("DEFAULT ",column.getDefaultValue());
// }
//
// private String buildNullable(TableColumn column, OceanBaseColumnTypeEnum type) {
// if(!type.getColumnType().isSupportNullable()){
// return "";
// }
// if (column.getNullable()!=null && 1==column.getNullable()) {
// return "NULL";
// } else {
// return "NOT NULL";
// }
// }
//
// private String buildDataType(TableColumn column, OceanBaseColumnTypeEnum type) {
// String columnType = type.columnType.getTypeName();
// if (Arrays.asList(BINARY, VARBINARY, VARCHAR, CHAR).contains(type)) {
// return StringUtils.join(columnType, "(", column.getColumnSize(), ")");
// }
//
// if (BIT.equals(type)) {
// return StringUtils.join(columnType, "(", column.getColumnSize(), ")");
// }
//
// if (Arrays.asList(TIME, DATETIME, TIMESTAMP).contains(type)) {
// if (column.getColumnSize() == null || column.getColumnSize() == 0) {
// return columnType;
// } else {
// return StringUtils.join(columnType, "(", column.getColumnSize(), ")");
// }
// }
//
//
// if (Arrays.asList(DECIMAL, FLOAT, DOUBLE).contains(type)) {
// if (column.getColumnSize() == null || column.getDecimalDigits() == null) {
// return columnType;
// }
// if (column.getColumnSize() != null && column.getDecimalDigits() == null) {
// return StringUtils.join(columnType, "(", column.getColumnSize() + ")");
// }
// if (column.getColumnSize() != null && column.getDecimalDigits() != null) {
// return StringUtils.join(columnType, "(", column.getColumnSize() + "," + column.getDecimalDigits() + ")");
// }
// }
//
// if (Arrays.asList(DECIMAL_UNSIGNED, FLOAT_UNSIGNED, DECIMAL_UNSIGNED).contains(type)) {
// if (column.getColumnSize() == null || column.getDecimalDigits() == null) {
// return columnType;
// }
// if (column.getColumnSize() != null && column.getDecimalDigits() == null) {
// return unsignedDataType(columnType, "(" + column.getColumnSize() + ")");
// }
// if (column.getColumnSize() != null && column.getDecimalDigits() != null) {
// return unsignedDataType(columnType, "(" + column.getColumnSize() + "," + column.getDecimalDigits() + ")");
// }
// }
//
// if(Arrays.asList(SET,ENUM).contains(type)){
// if(!StringUtils.isEmpty( column.getValue())){
// return StringUtils.join(columnType,"(",column.getValue(),")");
// }
// //List<String> enumList = column.
// }
//
// return columnType;
// }
//
// private String unsignedDataType(String dataTypeName, String middle) {
// String[] split = dataTypeName.split(" ");
// if (split.length == 2) {
// return StringUtils.join(split[0], middle, split[1]);
// }
// return StringUtils.join(dataTypeName, middle);
// }
//
// public static List<ColumnType> getTypes(){
// return Arrays.stream(OceanBaseColumnTypeEnum.values()).map(columnTypeEnum ->
// columnTypeEnum.getColumnType()
// ).toList();
// }
//
//
//}

View File

@ -0,0 +1,133 @@
//package ai.chat2db.plugin.oceanbase.type;
//
//import ai.chat2db.spi.enums.EditStatus;
//import ai.chat2db.spi.model.IndexType;
//import ai.chat2db.spi.model.TableIndex;
//import ai.chat2db.spi.model.TableIndexColumn;
//import org.apache.commons.lang3.StringUtils;
//
//import java.util.Arrays;
//import java.util.List;
//
//public enum OceanBaseIndexTypeEnum {
//
// PRIMARY_KEY("Primary", "PRIMARY KEY"),
//
// NORMAL("Normal", "INDEX"),
//
// UNIQUE("Unique", "UNIQUE INDEX"),
//
// FULLTEXT("Fulltext", "FULLTEXT INDEX"),
//
// SPATIAL("Spatial", "SPATIAL INDEX");
//
// public String getName() {
// return name;
// }
//
// private String name;
//
//
// public String getKeyword() {
// return keyword;
// }
//
// private String keyword;
//
// public IndexType getIndexType() {
// return indexType;
// }
//
// public void setIndexType(IndexType indexType) {
// this.indexType = indexType;
// }
//
// private IndexType indexType;
//
// OceanBaseIndexTypeEnum(String name, String keyword) {
// this.name = name;
// this.keyword = keyword;
// this.indexType = new IndexType(name);
// }
//
//
// public static OceanBaseIndexTypeEnum getByType(String type) {
// for (OceanBaseIndexTypeEnum value : OceanBaseIndexTypeEnum.values()) {
// if (value.name.equalsIgnoreCase(type)) {
// return value;
// }
// }
// return null;
// }
//
// public String buildIndexScript(TableIndex tableIndex) {
// StringBuilder script = new StringBuilder();
//
// script.append(keyword).append(" ");
//
// script.append(buildIndexName(tableIndex)).append(" ");
//
// script.append(buildIndexColumn(tableIndex)).append(" ");
//
// script.append(buildIndexComment(tableIndex)).append(" ");
//
// return script.toString();
// }
//
// private String buildIndexComment(TableIndex tableIndex) {
// if(StringUtils.isBlank(tableIndex.getComment())){
// return "";
// }else {
// return StringUtils.join("COMMENT '",tableIndex.getComment(),"'");
// }
//
// }
//
// private String buildIndexColumn(TableIndex tableIndex) {
// StringBuilder script = new StringBuilder();
// script.append("(");
// for (TableIndexColumn column : tableIndex.getColumnList()) {
// if(StringUtils.isNotBlank(column.getColumnName())) {
// script.append("`").append(column.getColumnName()).append("`");
// if (!StringUtils.isBlank(column.getAscOrDesc()) && !PRIMARY_KEY.equals(this)) {
// script.append(" ").append(column.getAscOrDesc());
// }
// script.append(",");
// }
// }
// script.deleteCharAt(script.length() - 1);
// script.append(")");
// return script.toString();
// }
//
// private String buildIndexName(TableIndex tableIndex) {
// if(this.equals(PRIMARY_KEY)){
// return "";
// }else {
// return "`"+tableIndex.getName()+"`";
// }
// }
//
// public String buildModifyIndex(TableIndex tableIndex) {
// if (EditStatus.DELETE.name().equals(tableIndex.getEditStatus())) {
// return buildDropIndex(tableIndex);
// }
// if (EditStatus.MODIFY.name().equals(tableIndex.getEditStatus())) {
// return StringUtils.join(buildDropIndex(tableIndex),",\n", "ADD ", buildIndexScript(tableIndex));
// }
// if (EditStatus.ADD.name().equals(tableIndex.getEditStatus())) {
// return StringUtils.join("ADD ", buildIndexScript(tableIndex));
// }
// return "";
// }
//
// private String buildDropIndex(TableIndex tableIndex) {
// if (OceanBaseIndexTypeEnum.PRIMARY_KEY.getName().equals(tableIndex.getType())) {
// return StringUtils.join("DROP PRIMARY KEY");
// }
// return StringUtils.join("DROP INDEX `", tableIndex.getOldName(),"`");
// }
// public static List<IndexType> getIndexTypes() {
// return Arrays.asList(OceanBaseIndexTypeEnum.values()).stream().map(OceanBaseIndexTypeEnum::getIndexType).collect(java.util.stream.Collectors.toList());
// }
//}

View File

@ -132,6 +132,17 @@ public class DataSource {
*/
private String kind;
/**
* 服务名称
*/
private String serviceName;
/**
* 服务类型
*/
private String serviceType;
public LinkedHashMap<String, Object> getExtendMap() {
if (ObjectUtils.isEmpty(extendInfo)) {
return new LinkedHashMap<>();

View File

@ -108,4 +108,15 @@ public class DataSourceCreateParam {
*/
@NotNull
private Long environmentId;
/**
* 服务名称
*/
private String serviceName;
/**
* 服务类型
*/
private String serviceType;
}

View File

@ -104,4 +104,14 @@ public class DataSourceUpdateParam {
*/
private DriverConfig driverConfig;
/**
* 服务名称
*/
private String serviceName;
/**
* 服务类型
*/
private String serviceType;
}

View File

@ -107,7 +107,7 @@ public class DataSourceServiceImpl implements DataSourceService {
return;
}
try (Connection connection = IDriverManager.getConnection(dataSource.getUrl(), dataSource.getUserName(),
dataSource.getPassword(), dataSource.getDriverConfig(), dataSource.getExtendMap())) {
dataSource.getPassword(), dataSource.getDriverConfig(), dataSource.getExtendMap())) {
DatabaseQueryAllParam databaseQueryAllParam = new DatabaseQueryAllParam();
databaseQueryAllParam.setDataSourceId(dataSourceId);
databaseQueryAllParam.setConnection(connection);
@ -184,8 +184,8 @@ public class DataSourceServiceImpl implements DataSourceService {
LambdaQueryWrapper<DataSourceDO> queryWrapper = new LambdaQueryWrapper<>();
if (StringUtils.isNotBlank(param.getSearchKey())) {
queryWrapper.and(wrapper -> wrapper.like(DataSourceDO::getAlias, "%" + param.getSearchKey() + "%")
.or()
.like(DataSourceDO::getUrl, "%" + param.getSearchKey() + "%"));
.or()
.like(DataSourceDO::getUrl, "%" + param.getSearchKey() + "%"));
}
Integer start = param.getPageNo();
Integer offset = param.getPageSize();
@ -203,9 +203,9 @@ public class DataSourceServiceImpl implements DataSourceService {
LoginUser loginUser = ContextUtils.getLoginUser();
IPage<DataSourceDO> iPage = dataSourceCustomMapper.selectPageWithPermission(
new Page<>(param.getPageNo(), param.getPageSize()),
BooleanUtils.isTrue(loginUser.getAdmin()), loginUser.getId(), param.getSearchKey(), param.getKind(),
EasySqlUtils.orderBy(param.getOrderByList()));
new Page<>(param.getPageNo(), param.getPageSize()),
BooleanUtils.isTrue(loginUser.getAdmin()), loginUser.getId(), param.getSearchKey(), param.getKind(),
EasySqlUtils.orderBy(param.getOrderByList()));
List<DataSource> dataSources = dataSourceConverter.do2dto(iPage.getRecords());
@ -235,18 +235,18 @@ public class DataSourceServiceImpl implements DataSourceService {
@Override
public ActionResult preConnect(DataSourcePreConnectParam param) {
DataSourceTestParam testParam
= dataSourceConverter.param2param(param);
= 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());
dataSourceConnect.getErrorDetail());
}
return ActionResult.isSuccess();
}
@ -273,6 +273,26 @@ public class DataSourceServiceImpl implements DataSourceService {
}
fillEnvironment(list, selector);
fillExtendInfo(list);
}
private void fillExtendInfo(List<DataSource> list) {
for (DataSource dataSource : list) {
List<KeyValue> keyValues = dataSource.getExtendInfo();
if (CollectionUtils.isEmpty(keyValues)) {
continue;
}
for (KeyValue keyValue : keyValues) {
if (keyValue != null) {
if ("serviceName".equalsIgnoreCase(keyValue.getKey())) {
}
}
}
}
}
private void fillEnvironment(List<DataSource> list, DataSourceSelector selector) {

View File

@ -128,4 +128,15 @@ public class DataSourceDO implements Serializable {
* 连接类型
*/
private String kind;
/**
* 服务名称
*/
private String serviceName;
/**
* 服务类型
*/
private String serviceType;
}

View File

@ -0,0 +1,3 @@
ALTER TABLE `data_source` ADD COLUMN `service_name` varchar(128) NULL COMMENT '服务名';
ALTER TABLE `data_source` ADD COLUMN `service_type` varchar(128) NULL COMMENT '服务类型';

View File

@ -102,5 +102,15 @@ public class DataSourceCreateRequest {
@NotNull
private Long environmentId;
/**
* 服务名称
*/
private String serviceName;
/**
* 服务类型
*/
private String serviceType;
}

View File

@ -105,4 +105,14 @@ public class DataSourceUpdateRequest {
*/
@NotNull
private Long environmentId;
/**
* 服务名称
*/
private String serviceName;
/**
* 服务类型
*/
private String serviceType;
}

View File

@ -105,4 +105,16 @@ public class DataSourceCreateRequest {
@NotNull
private Long environmentId;
/**
* 服务名称
*/
private String serviceName;
/**
* 服务类型
*/
private String serviceType;
}

View File

@ -106,4 +106,14 @@ public class DataSourceUpdateRequest {
* 驱动配置
*/
private DriverConfig driverConfig;
/**
* 服务名称
*/
private String serviceName;
/**
* 服务类型
*/
private String serviceType;
}

View File

@ -117,4 +117,15 @@ public class DataSourceVO {
* @see ai.chat2db.server.domain.api.enums.DataSourceKindEnum
*/
private String kind;
/**
* 服务名称
*/
private String serviceName;
/**
* 服务类型
*/
private String serviceType;
}