mirror of
https://github.com/CodePhiliaX/Chat2DB.git
synced 2025-07-29 18:53:12 +08:00
support add service name
This commit is contained in:
@ -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();
|
||||
// }
|
||||
//}
|
@ -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();
|
||||
// }
|
||||
//
|
||||
//
|
||||
//}
|
@ -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());
|
||||
// }
|
||||
//}
|
@ -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<>();
|
||||
|
@ -108,4 +108,15 @@ public class DataSourceCreateParam {
|
||||
*/
|
||||
@NotNull
|
||||
private Long environmentId;
|
||||
|
||||
|
||||
/**
|
||||
* 服务名称
|
||||
*/
|
||||
private String serviceName;
|
||||
|
||||
/**
|
||||
* 服务类型
|
||||
*/
|
||||
private String serviceType;
|
||||
}
|
||||
|
@ -104,4 +104,14 @@ public class DataSourceUpdateParam {
|
||||
*/
|
||||
private DriverConfig driverConfig;
|
||||
|
||||
/**
|
||||
* 服务名称
|
||||
*/
|
||||
private String serviceName;
|
||||
|
||||
/**
|
||||
* 服务类型
|
||||
*/
|
||||
private String serviceType;
|
||||
|
||||
}
|
||||
|
@ -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) {
|
||||
|
@ -128,4 +128,15 @@ public class DataSourceDO implements Serializable {
|
||||
* 连接类型
|
||||
*/
|
||||
private String kind;
|
||||
|
||||
/**
|
||||
* 服务名称
|
||||
*/
|
||||
private String serviceName;
|
||||
|
||||
/**
|
||||
* 服务类型
|
||||
*/
|
||||
private String serviceType;
|
||||
|
||||
}
|
||||
|
@ -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 '服务类型';
|
||||
|
@ -102,5 +102,15 @@ public class DataSourceCreateRequest {
|
||||
@NotNull
|
||||
private Long environmentId;
|
||||
|
||||
/**
|
||||
* 服务名称
|
||||
*/
|
||||
private String serviceName;
|
||||
|
||||
/**
|
||||
* 服务类型
|
||||
*/
|
||||
private String serviceType;
|
||||
|
||||
|
||||
}
|
||||
|
@ -105,4 +105,14 @@ public class DataSourceUpdateRequest {
|
||||
*/
|
||||
@NotNull
|
||||
private Long environmentId;
|
||||
|
||||
/**
|
||||
* 服务名称
|
||||
*/
|
||||
private String serviceName;
|
||||
|
||||
/**
|
||||
* 服务类型
|
||||
*/
|
||||
private String serviceType;
|
||||
}
|
||||
|
@ -105,4 +105,16 @@ public class DataSourceCreateRequest {
|
||||
@NotNull
|
||||
private Long environmentId;
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 服务名称
|
||||
*/
|
||||
private String serviceName;
|
||||
|
||||
/**
|
||||
* 服务类型
|
||||
*/
|
||||
private String serviceType;
|
||||
|
||||
}
|
||||
|
@ -106,4 +106,14 @@ public class DataSourceUpdateRequest {
|
||||
* 驱动配置
|
||||
*/
|
||||
private DriverConfig driverConfig;
|
||||
|
||||
/**
|
||||
* 服务名称
|
||||
*/
|
||||
private String serviceName;
|
||||
|
||||
/**
|
||||
* 服务类型
|
||||
*/
|
||||
private String serviceType;
|
||||
}
|
||||
|
@ -117,4 +117,15 @@ public class DataSourceVO {
|
||||
* @see ai.chat2db.server.domain.api.enums.DataSourceKindEnum
|
||||
*/
|
||||
private String kind;
|
||||
|
||||
|
||||
/**
|
||||
* 服务名称
|
||||
*/
|
||||
private String serviceName;
|
||||
|
||||
/**
|
||||
* 服务类型
|
||||
*/
|
||||
private String serviceType;
|
||||
}
|
||||
|
Reference in New Issue
Block a user