diff --git a/chat2db-client/src/blocks/DatabaseTableEditor/ColumnList/index.tsx b/chat2db-client/src/blocks/DatabaseTableEditor/ColumnList/index.tsx index b013e8f7..ad6b6718 100644 --- a/chat2db-client/src/blocks/DatabaseTableEditor/ColumnList/index.tsx +++ b/chat2db-client/src/blocks/DatabaseTableEditor/ColumnList/index.tsx @@ -503,22 +503,7 @@ const ColumnList = forwardRef((props: IProps, ref: ForwardedRef) )} {editingConfig?.supportDefaultValue && ( - + )} {editingConfig?.supportCharset && ( diff --git a/chat2db-client/src/blocks/DatabaseTableEditor/index.tsx b/chat2db-client/src/blocks/DatabaseTableEditor/index.tsx index 8da03ecf..4638b394 100644 --- a/chat2db-client/src/blocks/DatabaseTableEditor/index.tsx +++ b/chat2db-client/src/blocks/DatabaseTableEditor/index.tsx @@ -54,6 +54,7 @@ export interface IDatabaseSupportField { charsets: IOption[]; collations: IOption[]; indexTypes: IOption[]; + defaultValues: IOption[]; } export default memo((props: IProps) => { @@ -93,6 +94,7 @@ export default memo((props: IProps) => { charsets: [], collations: [], indexTypes: [], + defaultValues: [], }); const [isLoading, setIsLoading] = useState(false); @@ -148,11 +150,20 @@ export default memo((props: IProps) => { }; }) || []; + const defaultValues = + res?.defaultValues?.map((i) => { + return { + value: i.defaultValue, + label: i.defaultValue, + }; + }) || []; + setDatabaseSupportField({ columnTypes, charsets, collations, indexTypes, + defaultValues, }); }); } diff --git a/chat2db-client/src/typings/database.ts b/chat2db-client/src/typings/database.ts index b1760429..a99ff117 100644 --- a/chat2db-client/src/typings/database.ts +++ b/chat2db-client/src/typings/database.ts @@ -51,6 +51,7 @@ export interface IDatabaseSupportField { charsets: ICharset[]; collations: ICollation[]; indexTypes: IIndexTypes[]; + defaultValues: IDefaultValue[]; } /** 字段所对应的 字符集*/ @@ -84,3 +85,8 @@ export interface IColumnTypes { supportValue: boolean; // 是否支持值 supportUnit: boolean; // 是否支持单位 } + +/** 不同数据库支持不同的默认值 */ +export interface IDefaultValue { + defaultValue: string; // 默认值 +} diff --git a/chat2db-server/chat2db-plugins/chat2db-mysql/src/main/java/ai/chat2db/plugin/mysql/MysqlMetaData.java b/chat2db-server/chat2db-plugins/chat2db-mysql/src/main/java/ai/chat2db/plugin/mysql/MysqlMetaData.java index 27c03f31..edd32797 100644 --- a/chat2db-server/chat2db-plugins/chat2db-mysql/src/main/java/ai/chat2db/plugin/mysql/MysqlMetaData.java +++ b/chat2db-server/chat2db-plugins/chat2db-mysql/src/main/java/ai/chat2db/plugin/mysql/MysqlMetaData.java @@ -8,10 +8,7 @@ import java.util.stream.Collectors; import java.util.stream.Stream; import ai.chat2db.plugin.mysql.builder.MysqlSqlBuilder; -import ai.chat2db.plugin.mysql.type.MysqlCharsetEnum; -import ai.chat2db.plugin.mysql.type.MysqlCollationEnum; -import ai.chat2db.plugin.mysql.type.MysqlColumnTypeEnum; -import ai.chat2db.plugin.mysql.type.MysqlIndexTypeEnum; +import ai.chat2db.plugin.mysql.type.*; import ai.chat2db.spi.MetaData; import ai.chat2db.spi.SqlBuilder; import ai.chat2db.spi.jdbc.DefaultMetaService; @@ -287,6 +284,7 @@ public class MysqlMetaData extends DefaultMetaService implements MetaData { .charsets(MysqlCharsetEnum.getCharsets()) .collations(MysqlCollationEnum.getCollations()) .indexTypes(MysqlIndexTypeEnum.getIndexTypes()) + .defaultValues(MysqlDefaultValueEnum.getDefaultValues()) .build(); } diff --git a/chat2db-server/chat2db-plugins/chat2db-mysql/src/main/java/ai/chat2db/plugin/mysql/type/MysqlDefaultValueEnum.java b/chat2db-server/chat2db-plugins/chat2db-mysql/src/main/java/ai/chat2db/plugin/mysql/type/MysqlDefaultValueEnum.java new file mode 100644 index 00000000..b48e2c21 --- /dev/null +++ b/chat2db-server/chat2db-plugins/chat2db-mysql/src/main/java/ai/chat2db/plugin/mysql/type/MysqlDefaultValueEnum.java @@ -0,0 +1,29 @@ +package ai.chat2db.plugin.mysql.type; + +import ai.chat2db.spi.model.DefaultValue; + +import java.util.Arrays; +import java.util.List; + +public enum MysqlDefaultValueEnum { + + EMPTY_STRING("EMPTY_STRING"), + NULL("NULL"), + CURRENT_TIMESTAMP("CURRENT_TIMESTAMP"), + ; + private DefaultValue defaultValue; + + MysqlDefaultValueEnum(String defaultValue) { + this.defaultValue = new DefaultValue(defaultValue); + } + + + public DefaultValue getDefaultValue() { + return defaultValue; + } + + public static List getDefaultValues() { + return Arrays.stream(MysqlDefaultValueEnum.values()).map(MysqlDefaultValueEnum::getDefaultValue).collect(java.util.stream.Collectors.toList()); + } + +} diff --git a/chat2db-server/chat2db-plugins/chat2db-oracle/src/main/java/ai/chat2db/plugin/oracle/OracleMetaData.java b/chat2db-server/chat2db-plugins/chat2db-oracle/src/main/java/ai/chat2db/plugin/oracle/OracleMetaData.java index e2cca8ff..86694332 100644 --- a/chat2db-server/chat2db-plugins/chat2db-oracle/src/main/java/ai/chat2db/plugin/oracle/OracleMetaData.java +++ b/chat2db-server/chat2db-plugins/chat2db-oracle/src/main/java/ai/chat2db/plugin/oracle/OracleMetaData.java @@ -8,6 +8,7 @@ import java.util.stream.Collectors; import ai.chat2db.plugin.oracle.builder.OracleSqlBuilder; import ai.chat2db.plugin.oracle.type.OracleColumnTypeEnum; +import ai.chat2db.plugin.oracle.type.OracleDefaultValueEnum; import ai.chat2db.plugin.oracle.type.OracleIndexTypeEnum; import ai.chat2db.spi.MetaData; import ai.chat2db.spi.SqlBuilder; @@ -290,6 +291,7 @@ public class OracleMetaData extends DefaultMetaService implements MetaData { .charsets(Lists.newArrayList()) .collations(Lists.newArrayList()) .indexTypes(OracleIndexTypeEnum.getIndexTypes()) + .defaultValues(OracleDefaultValueEnum.getDefaultValues()) .build(); } diff --git a/chat2db-server/chat2db-plugins/chat2db-oracle/src/main/java/ai/chat2db/plugin/oracle/type/OracleDefaultValueEnum.java b/chat2db-server/chat2db-plugins/chat2db-oracle/src/main/java/ai/chat2db/plugin/oracle/type/OracleDefaultValueEnum.java new file mode 100644 index 00000000..473af5ed --- /dev/null +++ b/chat2db-server/chat2db-plugins/chat2db-oracle/src/main/java/ai/chat2db/plugin/oracle/type/OracleDefaultValueEnum.java @@ -0,0 +1,28 @@ +package ai.chat2db.plugin.oracle.type; + +import ai.chat2db.spi.model.DefaultValue; + +import java.util.Arrays; +import java.util.List; + +public enum OracleDefaultValueEnum { + + EMPTY_STRING("EMPTY_STRING"), + NULL("NULL"), + ; + private DefaultValue defaultValue; + + OracleDefaultValueEnum(String defaultValue) { + this.defaultValue = new DefaultValue(defaultValue); + } + + + public DefaultValue getDefaultValue() { + return defaultValue; + } + + public static List getDefaultValues() { + return Arrays.stream(OracleDefaultValueEnum.values()).map(OracleDefaultValueEnum::getDefaultValue).collect(java.util.stream.Collectors.toList()); + } + +} diff --git a/chat2db-server/chat2db-spi/src/main/java/ai/chat2db/spi/model/DefaultValue.java b/chat2db-server/chat2db-spi/src/main/java/ai/chat2db/spi/model/DefaultValue.java new file mode 100644 index 00000000..dfffbf16 --- /dev/null +++ b/chat2db-server/chat2db-spi/src/main/java/ai/chat2db/spi/model/DefaultValue.java @@ -0,0 +1,12 @@ +package ai.chat2db.spi.model; + +import lombok.AllArgsConstructor; +import lombok.Data; + +@Data +@AllArgsConstructor +public class DefaultValue { + + private String defaultValue; + +} diff --git a/chat2db-server/chat2db-spi/src/main/java/ai/chat2db/spi/model/TableMeta.java b/chat2db-server/chat2db-spi/src/main/java/ai/chat2db/spi/model/TableMeta.java index 82e9a5a9..6ae0c2d7 100644 --- a/chat2db-server/chat2db-spi/src/main/java/ai/chat2db/spi/model/TableMeta.java +++ b/chat2db-server/chat2db-spi/src/main/java/ai/chat2db/spi/model/TableMeta.java @@ -19,4 +19,6 @@ public class TableMeta { private List indexTypes; + + private List defaultValues; }