diff --git a/chat2db-server/chat2db-plugins/chat2db-clickhouse/src/main/java/ai/chat2db/plugin/clickhouse/clickhouse.json b/chat2db-server/chat2db-plugins/chat2db-clickhouse/src/main/java/ai/chat2db/plugin/clickhouse/clickhouse.json index f0528ea2..936c2c00 100644 --- a/chat2db-server/chat2db-plugins/chat2db-clickhouse/src/main/java/ai/chat2db/plugin/clickhouse/clickhouse.json +++ b/chat2db-server/chat2db-plugins/chat2db-clickhouse/src/main/java/ai/chat2db/plugin/clickhouse/clickhouse.json @@ -1,5 +1,7 @@ { "dbType": "CLICKHOUSE", + "supportDatabase": false, + "supportSchema": false, "driverConfigList": [ { "url": "jdbc:clickhouse://localhost:8123/", diff --git a/chat2db-server/chat2db-plugins/chat2db-db2/src/main/java/ai/chat2db/plugin/db2/db2.json b/chat2db-server/chat2db-plugins/chat2db-db2/src/main/java/ai/chat2db/plugin/db2/db2.json index 0f72b596..b0b3d12a 100644 --- a/chat2db-server/chat2db-plugins/chat2db-db2/src/main/java/ai/chat2db/plugin/db2/db2.json +++ b/chat2db-server/chat2db-plugins/chat2db-db2/src/main/java/ai/chat2db/plugin/db2/db2.json @@ -1,5 +1,7 @@ { "dbType": "DB2", + "supportDatabase": false, + "supportSchema": true, "driverConfigList": [ { "url": "jdbc:db2://localhost:50000/", diff --git a/chat2db-server/chat2db-plugins/chat2db-dm/src/main/java/ai/chat2db/plugin/dm/dm.json b/chat2db-server/chat2db-plugins/chat2db-dm/src/main/java/ai/chat2db/plugin/dm/dm.json index e58e1254..075966e1 100644 --- a/chat2db-server/chat2db-plugins/chat2db-dm/src/main/java/ai/chat2db/plugin/dm/dm.json +++ b/chat2db-server/chat2db-plugins/chat2db-dm/src/main/java/ai/chat2db/plugin/dm/dm.json @@ -1,5 +1,7 @@ { "dbType": "DM", + "supportDatabase": false, + "supportSchema": true, "driverConfigList": [ { "url": "jdbc:dm://localhost:5236/", diff --git a/chat2db-server/chat2db-plugins/chat2db-h2/src/main/java/ai/chat2db/plugin/h2/h2.json b/chat2db-server/chat2db-plugins/chat2db-h2/src/main/java/ai/chat2db/plugin/h2/h2.json index 552e0ef3..ee11410d 100644 --- a/chat2db-server/chat2db-plugins/chat2db-h2/src/main/java/ai/chat2db/plugin/h2/h2.json +++ b/chat2db-server/chat2db-plugins/chat2db-h2/src/main/java/ai/chat2db/plugin/h2/h2.json @@ -1,5 +1,7 @@ { "dbType": "H2", + "supportDatabase": true, + "supportSchema": true, "driverConfigList": [ { "url": "jdbc:h2:tcp://localhost:9092/", diff --git a/chat2db-server/chat2db-plugins/chat2db-hive/src/main/java/ai/chat2db/plugin/hive/hive.json b/chat2db-server/chat2db-plugins/chat2db-hive/src/main/java/ai/chat2db/plugin/hive/hive.json index 87f528c8..119cf9a7 100644 --- a/chat2db-server/chat2db-plugins/chat2db-hive/src/main/java/ai/chat2db/plugin/hive/hive.json +++ b/chat2db-server/chat2db-plugins/chat2db-hive/src/main/java/ai/chat2db/plugin/hive/hive.json @@ -1,5 +1,7 @@ { "dbType": "HIVE", + "supportDatabase": false, + "supportSchema": false, "driverConfigList": [ { "url": "jdbc:hive2://localhost:10000/", diff --git a/chat2db-server/chat2db-plugins/chat2db-kingbase/src/main/java/ai/chat2db/plugin/kingbase/kingbase.json b/chat2db-server/chat2db-plugins/chat2db-kingbase/src/main/java/ai/chat2db/plugin/kingbase/kingbase.json index 540721bc..c401d478 100644 --- a/chat2db-server/chat2db-plugins/chat2db-kingbase/src/main/java/ai/chat2db/plugin/kingbase/kingbase.json +++ b/chat2db-server/chat2db-plugins/chat2db-kingbase/src/main/java/ai/chat2db/plugin/kingbase/kingbase.json @@ -1,5 +1,7 @@ { "dbType": "KINGBASE", + "supportDatabase": true, + "supportSchema": true, "driverConfigList": [ { "url": "jdbc:kingbase8://localhost:54321/", diff --git a/chat2db-server/chat2db-plugins/chat2db-mariadb/src/main/java/ai/chat2db/plugin/mariadb/mariadb.json b/chat2db-server/chat2db-plugins/chat2db-mariadb/src/main/java/ai/chat2db/plugin/mariadb/mariadb.json index e2e33688..59caa4a1 100644 --- a/chat2db-server/chat2db-plugins/chat2db-mariadb/src/main/java/ai/chat2db/plugin/mariadb/mariadb.json +++ b/chat2db-server/chat2db-plugins/chat2db-mariadb/src/main/java/ai/chat2db/plugin/mariadb/mariadb.json @@ -1,5 +1,7 @@ { "dbType": "MARIADB", + "supportDatabase": true, + "supportSchema": false, "driverConfigList": [ { "url": "jdbc:mariadb://localhost:3306/", diff --git a/chat2db-server/chat2db-plugins/chat2db-mongodb/src/main/java/ai/chat2db/plugin/mongodb/mongodb.json b/chat2db-server/chat2db-plugins/chat2db-mongodb/src/main/java/ai/chat2db/plugin/mongodb/mongodb.json index cb4118f9..3a34cd3d 100644 --- a/chat2db-server/chat2db-plugins/chat2db-mongodb/src/main/java/ai/chat2db/plugin/mongodb/mongodb.json +++ b/chat2db-server/chat2db-plugins/chat2db-mongodb/src/main/java/ai/chat2db/plugin/mongodb/mongodb.json @@ -1,5 +1,7 @@ { "dbType": "MONGODB", + "supportDatabase": false, + "supportSchema": false, "driverConfigList": [ { "url": "jdbc:mongodb://localhost:27017", diff --git a/chat2db-server/chat2db-plugins/chat2db-mysql/src/main/java/ai/chat2db/plugin/mysql/mysql.json b/chat2db-server/chat2db-plugins/chat2db-mysql/src/main/java/ai/chat2db/plugin/mysql/mysql.json index d326f1b2..5c720fa7 100644 --- a/chat2db-server/chat2db-plugins/chat2db-mysql/src/main/java/ai/chat2db/plugin/mysql/mysql.json +++ b/chat2db-server/chat2db-plugins/chat2db-mysql/src/main/java/ai/chat2db/plugin/mysql/mysql.json @@ -1,5 +1,7 @@ { "dbType": "MYSQL", + "supportDatabase": true, + "supportSchema": false, "driverConfigList": [ { "url": "jdbc:mysql://localhost:3306/", diff --git a/chat2db-server/chat2db-plugins/chat2db-oceanbase/src/main/java/ai/chat2db/plugin/oceanbase/oceanbase.json b/chat2db-server/chat2db-plugins/chat2db-oceanbase/src/main/java/ai/chat2db/plugin/oceanbase/oceanbase.json index 1e96bc9a..c3e2cff3 100644 --- a/chat2db-server/chat2db-plugins/chat2db-oceanbase/src/main/java/ai/chat2db/plugin/oceanbase/oceanbase.json +++ b/chat2db-server/chat2db-plugins/chat2db-oceanbase/src/main/java/ai/chat2db/plugin/oceanbase/oceanbase.json @@ -1,5 +1,7 @@ { "dbType": "OCEANBASE", + "supportDatabase": false, + "supportSchema": false, "driverConfigList": [ { "url": "jdbc:oceanbase://localhost:2883/", diff --git a/chat2db-server/chat2db-plugins/chat2db-oracle/src/main/java/ai/chat2db/plugin/oracle/oracle.json b/chat2db-server/chat2db-plugins/chat2db-oracle/src/main/java/ai/chat2db/plugin/oracle/oracle.json index 18203f8e..e2ae89fb 100644 --- a/chat2db-server/chat2db-plugins/chat2db-oracle/src/main/java/ai/chat2db/plugin/oracle/oracle.json +++ b/chat2db-server/chat2db-plugins/chat2db-oracle/src/main/java/ai/chat2db/plugin/oracle/oracle.json @@ -1,5 +1,7 @@ { "dbType": "ORACLE", + "supportDatabase": false, + "supportSchema": true, "driverConfigList": [ { "url": "jdbc:oracle:thin:@localhost:1521:XE", diff --git a/chat2db-server/chat2db-plugins/chat2db-postgresql/src/main/java/ai/chat2db/plugin/postgresql/pg.json b/chat2db-server/chat2db-plugins/chat2db-postgresql/src/main/java/ai/chat2db/plugin/postgresql/pg.json index ea52c00e..040611bb 100644 --- a/chat2db-server/chat2db-plugins/chat2db-postgresql/src/main/java/ai/chat2db/plugin/postgresql/pg.json +++ b/chat2db-server/chat2db-plugins/chat2db-postgresql/src/main/java/ai/chat2db/plugin/postgresql/pg.json @@ -1,5 +1,7 @@ { "dbType": "POSTGRESQL", + "supportDatabase": true, + "supportSchema": true, "driverConfigList": [ { "url": "jdbc:postgresql://localhost:5432/postgres", diff --git a/chat2db-server/chat2db-plugins/chat2db-presto/src/main/java/ai/chat2db/plugin/presto/presto.json b/chat2db-server/chat2db-plugins/chat2db-presto/src/main/java/ai/chat2db/plugin/presto/presto.json index e2b87b54..b382dbf4 100644 --- a/chat2db-server/chat2db-plugins/chat2db-presto/src/main/java/ai/chat2db/plugin/presto/presto.json +++ b/chat2db-server/chat2db-plugins/chat2db-presto/src/main/java/ai/chat2db/plugin/presto/presto.json @@ -1,5 +1,7 @@ { "dbType": "PRESTO", + "supportDatabase": false, + "supportSchema": false, "driverConfigList": [ { "url": "jdbc:presto://localhost:8080/", diff --git a/chat2db-server/chat2db-plugins/chat2db-redis/src/main/java/ai/chat2db/plugin/redis/redis.json b/chat2db-server/chat2db-plugins/chat2db-redis/src/main/java/ai/chat2db/plugin/redis/redis.json index 6c0be71d..a10b33ae 100644 --- a/chat2db-server/chat2db-plugins/chat2db-redis/src/main/java/ai/chat2db/plugin/redis/redis.json +++ b/chat2db-server/chat2db-plugins/chat2db-redis/src/main/java/ai/chat2db/plugin/redis/redis.json @@ -1,5 +1,7 @@ { "dbType": "REDIS", + "supportDatabase": false, + "supportSchema": false, "driverConfigList": [ { "url": "jdbc:redis://127.0.0.1:6379/0", diff --git a/chat2db-server/chat2db-plugins/chat2db-sqlite/src/main/java/ai/chat2db/plugin/sqlite/sqlite.json b/chat2db-server/chat2db-plugins/chat2db-sqlite/src/main/java/ai/chat2db/plugin/sqlite/sqlite.json index a2acf8c2..a12e7bd5 100644 --- a/chat2db-server/chat2db-plugins/chat2db-sqlite/src/main/java/ai/chat2db/plugin/sqlite/sqlite.json +++ b/chat2db-server/chat2db-plugins/chat2db-sqlite/src/main/java/ai/chat2db/plugin/sqlite/sqlite.json @@ -1,5 +1,7 @@ { "dbType": "SQLITE", + "supportDatabase": false, + "supportSchema": false, "driverConfigList": [ { "url": "jdbc:sqlite:identifier.sqlite", diff --git a/chat2db-server/chat2db-plugins/chat2db-sqlserver/src/main/java/ai/chat2db/plugin/sqlserver/sqlserver.json b/chat2db-server/chat2db-plugins/chat2db-sqlserver/src/main/java/ai/chat2db/plugin/sqlserver/sqlserver.json index ee8faea3..1c54832c 100644 --- a/chat2db-server/chat2db-plugins/chat2db-sqlserver/src/main/java/ai/chat2db/plugin/sqlserver/sqlserver.json +++ b/chat2db-server/chat2db-plugins/chat2db-sqlserver/src/main/java/ai/chat2db/plugin/sqlserver/sqlserver.json @@ -1,5 +1,7 @@ { "dbType": "SQLSERVER", + "supportDatabase": true, + "supportSchema": true, "driverConfigList": [ { "url": "jdbc:sqlserver://localhost:1433;database=master", diff --git a/chat2db-server/chat2db-server-domain/chat2db-server-domain-api/src/main/java/ai/chat2db/server/domain/api/model/DataSource.java b/chat2db-server/chat2db-server-domain/chat2db-server-domain-api/src/main/java/ai/chat2db/server/domain/api/model/DataSource.java index 930aa7f8..1abce5fa 100644 --- a/chat2db-server/chat2db-server-domain/chat2db-server-domain-api/src/main/java/ai/chat2db/server/domain/api/model/DataSource.java +++ b/chat2db-server/chat2db-server-domain/chat2db-server-domain-api/src/main/java/ai/chat2db/server/domain/api/model/DataSource.java @@ -143,6 +143,11 @@ public class DataSource { */ private String serviceType; + + private boolean supportDatabase; + + private boolean supportSchema; + public LinkedHashMap getExtendMap() { if (ObjectUtils.isEmpty(extendInfo)) { return new LinkedHashMap<>(); diff --git a/chat2db-server/chat2db-server-domain/chat2db-server-domain-core/src/main/java/ai/chat2db/server/domain/core/impl/DataSourceServiceImpl.java b/chat2db-server/chat2db-server-domain/chat2db-server-domain-core/src/main/java/ai/chat2db/server/domain/core/impl/DataSourceServiceImpl.java index 8486450f..26f69f81 100644 --- a/chat2db-server/chat2db-server-domain/chat2db-server-domain-core/src/main/java/ai/chat2db/server/domain/core/impl/DataSourceServiceImpl.java +++ b/chat2db-server/chat2db-server-domain/chat2db-server-domain-core/src/main/java/ai/chat2db/server/domain/core/impl/DataSourceServiceImpl.java @@ -35,6 +35,7 @@ import ai.chat2db.server.tools.common.util.ContextUtils; import ai.chat2db.server.tools.common.util.EasyCollectionUtils; import ai.chat2db.server.tools.common.util.EasyEnumUtils; import ai.chat2db.server.tools.common.util.EasySqlUtils; +import ai.chat2db.spi.config.DBConfig; import ai.chat2db.spi.config.DriverConfig; import ai.chat2db.spi.model.DataSourceConnect; import ai.chat2db.spi.model.Database; @@ -278,27 +279,27 @@ public class DataSourceServiceImpl implements DataSourceService { fillEnvironment(list, selector); - fillExtendInfo(list); + fillSupportDatabase(list); } - private void fillExtendInfo(List list) { - for (DataSource dataSource : list) { - List keyValues = dataSource.getExtendInfo(); - if (CollectionUtils.isEmpty(keyValues)) { - continue; - } - for (KeyValue keyValue : keyValues) { - if (keyValue != null) { - if ("serviceName".equalsIgnoreCase(keyValue.getKey())) { + private void fillSupportDatabase(List list) { - } + if(CollectionUtils.isEmpty(list)) { + return; + } + for (DataSource dataSource:list) { + String type = dataSource.getType(); + if(StringUtils.isNotBlank(type)) { + DBConfig config = Chat2DBContext.getDBConfig(type); + if(config != null) { + dataSource.setSupportDatabase(config.isSupportDatabase()); + dataSource.setSupportSchema(config.isSupportSchema()); } } - } - } + private void fillEnvironment(List list, DataSourceSelector selector) { if (BooleanUtils.isNotTrue(selector.getEnvironment())) { return; diff --git a/chat2db-server/chat2db-server-start/src/main/resources/application-dev.yml b/chat2db-server/chat2db-server-start/src/main/resources/application-dev.yml index 62dbd0eb..f3eea546 100644 --- a/chat2db-server/chat2db-server-start/src/main/resources/application-dev.yml +++ b/chat2db-server/chat2db-server-start/src/main/resources/application-dev.yml @@ -1,7 +1,7 @@ spring: datasource: # 配置自带数据库的相对路径 - url: jdbc:h2:~/.chat2db/db/chat2db_dev;MODE=MYSQL;FILE_LOCK=NO + url: jdbc:h2:~/.chat2db/db/chat2db_dev;FILE_LOCK=NO;MODE=MYSQL driver-class-name: org.h2.Driver h2: console: diff --git a/chat2db-server/chat2db-server-web/chat2db-server-web-api/src/main/java/ai/chat2db/server/web/api/controller/data/source/vo/DataSourceVO.java b/chat2db-server/chat2db-server-web/chat2db-server-web-api/src/main/java/ai/chat2db/server/web/api/controller/data/source/vo/DataSourceVO.java index a8c9531b..f0a3c201 100644 --- a/chat2db-server/chat2db-server-web/chat2db-server-web-api/src/main/java/ai/chat2db/server/web/api/controller/data/source/vo/DataSourceVO.java +++ b/chat2db-server/chat2db-server-web/chat2db-server-web-api/src/main/java/ai/chat2db/server/web/api/controller/data/source/vo/DataSourceVO.java @@ -128,4 +128,14 @@ public class DataSourceVO { * 服务类型 */ private String serviceType; + + /** + * 是否支持数据库 + */ + private boolean supportDatabase; + + /** + * 是否支持schema + */ + private boolean supportSchema; } diff --git a/chat2db-server/chat2db-spi/src/main/java/ai/chat2db/spi/config/DBConfig.java b/chat2db-server/chat2db-spi/src/main/java/ai/chat2db/spi/config/DBConfig.java index f2a2c4f3..979ef078 100644 --- a/chat2db-server/chat2db-spi/src/main/java/ai/chat2db/spi/config/DBConfig.java +++ b/chat2db-server/chat2db-spi/src/main/java/ai/chat2db/spi/config/DBConfig.java @@ -42,6 +42,27 @@ public class DBConfig { private String simpleAlterTable; + private boolean supportDatabase; + + + private boolean supportSchema; + + public boolean isSupportDatabase() { + return supportDatabase; + } + + public void setSupportDatabase(boolean supportDatabase) { + this.supportDatabase = supportDatabase; + } + + public boolean isSupportSchema() { + return supportSchema; + } + + public void setSupportSchema(boolean supportSchema) { + this.supportSchema = supportSchema; + } + public String getDbType() { return dbType; } diff --git a/chat2db-server/chat2db-spi/src/main/java/ai/chat2db/spi/sql/Chat2DBContext.java b/chat2db-server/chat2db-spi/src/main/java/ai/chat2db/spi/sql/Chat2DBContext.java index 69021a62..4ef3c104 100644 --- a/chat2db-server/chat2db-spi/src/main/java/ai/chat2db/spi/sql/Chat2DBContext.java +++ b/chat2db-server/chat2db-spi/src/main/java/ai/chat2db/spi/sql/Chat2DBContext.java @@ -67,6 +67,10 @@ public class Chat2DBContext { return PLUGIN_MAP.get(dbType).getMetaData(); } + public static DBConfig getDBConfig(String dbType) { + return PLUGIN_MAP.get(dbType).getDBConfig(); + } + public static DBConfig getDBConfig() { return PLUGIN_MAP.get(getConnectInfo().getDbType()).getDBConfig(); }