From a0187de02d828fec40a65481cb0f17a9c7193003 Mon Sep 17 00:00:00 2001 From: tmlx1990 Date: Mon, 13 Nov 2023 18:23:41 +0800 Subject: [PATCH] =?UTF-8?q?=E5=B0=86=E5=AD=97=E6=AE=B5=E9=BB=98=E8=AE=A4?= =?UTF-8?q?=E5=80=BC=E9=80=89=E9=A1=B9=E6=94=B9=E4=B8=BA=E5=90=8E=E7=AB=AF?= =?UTF-8?q?=E4=BC=A0=E9=80=92=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../DatabaseTableEditor/ColumnList/index.tsx | 17 +---------- .../src/blocks/DatabaseTableEditor/index.tsx | 11 +++++++ chat2db-client/src/typings/database.ts | 6 ++++ .../chat2db/plugin/mysql/MysqlMetaData.java | 6 ++-- .../mysql/type/MysqlDefaultValueEnum.java | 29 +++++++++++++++++++ .../chat2db/plugin/oracle/OracleMetaData.java | 2 ++ .../oracle/type/OracleDefaultValueEnum.java | 28 ++++++++++++++++++ .../ai/chat2db/spi/model/DefaultValue.java | 12 ++++++++ .../java/ai/chat2db/spi/model/TableMeta.java | 2 ++ 9 files changed, 93 insertions(+), 20 deletions(-) create mode 100644 chat2db-server/chat2db-plugins/chat2db-mysql/src/main/java/ai/chat2db/plugin/mysql/type/MysqlDefaultValueEnum.java create mode 100644 chat2db-server/chat2db-plugins/chat2db-oracle/src/main/java/ai/chat2db/plugin/oracle/type/OracleDefaultValueEnum.java create mode 100644 chat2db-server/chat2db-spi/src/main/java/ai/chat2db/spi/model/DefaultValue.java 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; }