From b0e7926e2281af756f6592d9658e02d11e120d03 Mon Sep 17 00:00:00 2001
From: jj <1558143046@qq.com>
Date: Thu, 17 Aug 2023 11:37:05 +0800
Subject: [PATCH 01/16] Update README_CN.md
---
README_CN.md | 3 +++
1 file changed, 3 insertions(+)
diff --git a/README_CN.md b/README_CN.md
index 110885dc..1647a09f 100644
--- a/README_CN.md
+++ b/README_CN.md
@@ -29,6 +29,9 @@ Languages: 中文 [English](README.md)
+如果觉得 Chat2DB 对您有帮助的话,请帮忙
+的右上角点个⭐ Star 和 Fork,您的支持是 Chat2DB 变得更好最大的动力
+
## 案例视频
https://github.com/chat2db/Chat2DB/assets/22975773/b58db908-5768-4a71-aa30-135d202e505f
From f57d73c5701d47064b0c98c93d19a03118571776 Mon Sep 17 00:00:00 2001
From: jj <1558143046@qq.com>
Date: Thu, 17 Aug 2023 11:39:05 +0800
Subject: [PATCH 02/16] Update README_CN.md
---
README_CN.md | 14 --------------
1 file changed, 14 deletions(-)
diff --git a/README_CN.md b/README_CN.md
index 1647a09f..97c0ad11 100644
--- a/README_CN.md
+++ b/README_CN.md
@@ -12,21 +12,7 @@
[](https://github.com/chat2db/Chat2DB/graphs/contributors)
-
-
-
分享 Chat2DB
-
-
-
-
-
-
-
-
-**许可说明**: Chat2DB 开源内容仅供个人免费使用,如想将该项目用于商业用途,请先联系该项目作者。
-
Languages: 中文 [English](README.md)
-
如果觉得 Chat2DB 对您有帮助的话,请帮忙
From 2028d017f6d9c2e1fab8671740363ca022b4fffb Mon Sep 17 00:00:00 2001
From: jj <1558143046@qq.com>
Date: Thu, 17 Aug 2023 11:39:56 +0800
Subject: [PATCH 03/16] Update README_CN.md
---
README_CN.md | 2 ++
1 file changed, 2 insertions(+)
diff --git a/README_CN.md b/README_CN.md
index 97c0ad11..8b1d0c9e 100644
--- a/README_CN.md
+++ b/README_CN.md
@@ -12,6 +12,8 @@
[](https://github.com/chat2db/Chat2DB/graphs/contributors)
+
+
Languages: 中文 [English](README.md)
From 39447d37ea9cbab4cf0890c4f5d6885760e61055 Mon Sep 17 00:00:00 2001
From: jj <1558143046@qq.com>
Date: Thu, 17 Aug 2023 11:43:20 +0800
Subject: [PATCH 04/16] Update README_CN.md
---
README_CN.md | 7 +++++--
1 file changed, 5 insertions(+), 2 deletions(-)
diff --git a/README_CN.md b/README_CN.md
index 8b1d0c9e..749357b5 100644
--- a/README_CN.md
+++ b/README_CN.md
@@ -14,11 +14,14 @@
-Languages: 中文 [English](README.md)
-
+ Languages: 中文 [English](README.md)
+
如果觉得 Chat2DB 对您有帮助的话,请帮忙
的右上角点个⭐ Star 和 Fork,您的支持是 Chat2DB 变得更好最大的动力
+
+
+
## 案例视频
From 4d84d095c9a7dc0370fefa17bb7b2b24c77feaee Mon Sep 17 00:00:00 2001
From: robinji0 <137188352+robinji0@users.noreply.github.com>
Date: Sat, 26 Aug 2023 17:34:25 +0800
Subject: [PATCH 05/16] Update README.md
---
README.md | 2 ++
1 file changed, 2 insertions(+)
diff --git a/README.md b/README.md
index ea6cc509..075ae300 100644
--- a/README.md
+++ b/README.md
@@ -192,6 +192,8 @@ Follow our WeChat public account.
+discord server
+
## ❤️ Acknowledgements
Thanks to all the students who contributed to Chat2DB~
From c07ef4381d379210a5d583d90f19a4f7f715c63b Mon Sep 17 00:00:00 2001
From: robinji0 <137188352+robinji0@users.noreply.github.com>
Date: Sat, 26 Aug 2023 17:36:39 +0800
Subject: [PATCH 06/16] Update README.md
---
README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/README.md b/README.md
index 075ae300..ba1562cc 100644
--- a/README.md
+++ b/README.md
@@ -192,7 +192,7 @@ Follow our WeChat public account.
-discord server
+ Click and join discord server
## ❤️ Acknowledgements
From 656cd3a33838e4809f8736ddf3486f5641767fc2 Mon Sep 17 00:00:00 2001
From: SwallowGG <1558143046@qq.com>
Date: Tue, 29 Aug 2023 21:52:53 +0800
Subject: [PATCH 07/16] fix dm function bug
---
.../src/main/java/ai/chat2db/plugin/dm/DMMetaData.java | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/chat2db-server/chat2db-plugins/chat2db-dm/src/main/java/ai/chat2db/plugin/dm/DMMetaData.java b/chat2db-server/chat2db-plugins/chat2db-dm/src/main/java/ai/chat2db/plugin/dm/DMMetaData.java
index 009d12e1..f6555f64 100644
--- a/chat2db-server/chat2db-plugins/chat2db-dm/src/main/java/ai/chat2db/plugin/dm/DMMetaData.java
+++ b/chat2db-server/chat2db-plugins/chat2db-dm/src/main/java/ai/chat2db/plugin/dm/DMMetaData.java
@@ -34,7 +34,7 @@ public class DMMetaData extends DefaultMetaService implements MetaData {
}
private static String ROUTINES_SQL
- = "SELECT OWNER, NAME, TEXT FROM ALL_SOURCE WHERE TYPE = '%s' AND NAME = '%s' AND NAME = '%s' ORDER BY LINE";
+ = "SELECT OWNER, NAME, TEXT FROM ALL_SOURCE WHERE TYPE = '%s' AND OWNER = '%s' AND NAME = '%s' ORDER BY LINE";
@Override
public Function function(Connection connection, @NotEmpty String databaseName, String schemaName,
From 9b659016f681797bba05defae8229ea0ac1fee89 Mon Sep 17 00:00:00 2001
From: SwallowGG <1558143046@qq.com>
Date: Tue, 29 Aug 2023 23:38:24 +0800
Subject: [PATCH 08/16] Fix bug with invalid schema specification
---
.../domain/core/impl/DatabaseServiceImpl.java | 34 ++-
.../tools/common/util/EasyIntegerUtils.java | 25 +++
.../controller/rdb/request/ColumnRequest.java | 2 +-
.../web/api/controller/rdb/vo/ColumnVO.java | 2 +-
.../chat2db/spi/jdbc/DefaultMetaService.java | 19 +-
.../java/ai/chat2db/spi/model/Database.java | 2 +
.../java/ai/chat2db/spi/model/Function.java | 7 +
.../java/ai/chat2db/spi/model/Procedure.java | 9 +
.../java/ai/chat2db/spi/model/Schema.java | 3 +
.../main/java/ai/chat2db/spi/model/Table.java | 8 +
.../ai/chat2db/spi/model/TableColumn.java | 23 +-
.../chat2db/spi/model/TableIndexColumn.java | 14 +-
.../java/ai/chat2db/spi/sql/SQLExecutor.java | 207 ++++++------------
.../ai/chat2db/spi/util/ResultSetUtils.java | 144 ++++++------
.../java/ai/chat2db/spi/util/SqlUtils.java | 11 +-
15 files changed, 269 insertions(+), 241 deletions(-)
create mode 100644 chat2db-server/chat2db-server-tools/chat2db-server-tools-common/src/main/java/ai/chat2db/server/tools/common/util/EasyIntegerUtils.java
diff --git a/chat2db-server/chat2db-server-domain/chat2db-server-domain-core/src/main/java/ai/chat2db/server/domain/core/impl/DatabaseServiceImpl.java b/chat2db-server/chat2db-server-domain/chat2db-server-domain-core/src/main/java/ai/chat2db/server/domain/core/impl/DatabaseServiceImpl.java
index bdf1cf8b..589bbc7f 100644
--- a/chat2db-server/chat2db-server-domain/chat2db-server-domain-core/src/main/java/ai/chat2db/server/domain/core/impl/DatabaseServiceImpl.java
+++ b/chat2db-server/chat2db-server-domain/chat2db-server-domain-core/src/main/java/ai/chat2db/server/domain/core/impl/DatabaseServiceImpl.java
@@ -87,12 +87,42 @@ public class DatabaseServiceImpl implements DatabaseService {
(key) -> param.isRefresh(), (key) -> {
Connection connection = param.getConnection() == null ? Chat2DBContext.getConnection()
: param.getConnection();
- MetaData metaData = Chat2DBContext.getMetaData();
- return metaData.schemas(connection, param.getDataBaseName());
+ return getSchemaList(param.getDataBaseName(), connection);
});
return ListResult.of(schemas);
}
+
+ private List getSchemaList(String databaseName, Connection connection) {
+ MetaData metaData = Chat2DBContext.getMetaData();
+ List schemas = metaData.schemas(connection,databaseName);
+ sortSchema(schemas,connection);
+ return schemas;
+ }
+
+ private void sortSchema(List schemas,Connection connection) {
+ if (CollectionUtils.isEmpty(schemas)) {
+ return;
+ }
+ String ulr = null;
+ try {
+ ulr = connection.getMetaData().getURL();
+ } catch (SQLException e) {
+ log.error("get url error", e);
+ }
+ // If the database name contains the name of the current database, the current database is placed in the first place
+ int num = -1;
+ for (int i = 0; i < schemas.size(); i++) {
+ if (StringUtils.isNotBlank(ulr) && ulr.contains(schemas.get(i).getName())) {
+ num = i;
+ break;
+ }
+ }
+ if (num != -1 && num != 0) {
+ Collections.swap(schemas, num, 0);
+ }
+ }
+
@Override
public DataResult queryDatabaseSchema(MetaDataQueryParam param) {
MetaSchema metaSchema = new MetaSchema();
diff --git a/chat2db-server/chat2db-server-tools/chat2db-server-tools-common/src/main/java/ai/chat2db/server/tools/common/util/EasyIntegerUtils.java b/chat2db-server/chat2db-server-tools/chat2db-server-tools-common/src/main/java/ai/chat2db/server/tools/common/util/EasyIntegerUtils.java
new file mode 100644
index 00000000..1e64099d
--- /dev/null
+++ b/chat2db-server/chat2db-server-tools/chat2db-server-tools-common/src/main/java/ai/chat2db/server/tools/common/util/EasyIntegerUtils.java
@@ -0,0 +1,25 @@
+package ai.chat2db.server.tools.common.util;
+
+public class EasyIntegerUtils {
+
+ /**
+ * 判断2个布尔值是否相同
+ *
+ * @param b1
+ * @param b2
+ * @param defaultValue 默认值 ,假设b1 b2为空的情况下 取哪个默认值
+ * @return
+ */
+ public static boolean equals(Integer b1, Integer b2, Integer defaultValue) {
+ if (b1 == b2) {
+ return true;
+ }
+ if (b1 == null) {
+ b1 = defaultValue;
+ }
+ if (b2 == null) {
+ b2 = defaultValue;
+ }
+ return b1 == b2;
+ }
+}
diff --git a/chat2db-server/chat2db-server-web/chat2db-server-web-api/src/main/java/ai/chat2db/server/web/api/controller/rdb/request/ColumnRequest.java b/chat2db-server/chat2db-server-web/chat2db-server-web-api/src/main/java/ai/chat2db/server/web/api/controller/rdb/request/ColumnRequest.java
index d0c30cd4..308faf17 100644
--- a/chat2db-server/chat2db-server-web/chat2db-server-web-api/src/main/java/ai/chat2db/server/web/api/controller/rdb/request/ColumnRequest.java
+++ b/chat2db-server/chat2db-server-web/chat2db-server-web-api/src/main/java/ai/chat2db/server/web/api/controller/rdb/request/ColumnRequest.java
@@ -35,7 +35,7 @@ public class ColumnRequest {
/**
* 是否为空
*/
- private Boolean nullable;
+ private Integer nullable;
/**
* 是否主键
diff --git a/chat2db-server/chat2db-server-web/chat2db-server-web-api/src/main/java/ai/chat2db/server/web/api/controller/rdb/vo/ColumnVO.java b/chat2db-server/chat2db-server-web/chat2db-server-web-api/src/main/java/ai/chat2db/server/web/api/controller/rdb/vo/ColumnVO.java
index a6f4b90b..c8757b6f 100644
--- a/chat2db-server/chat2db-server-web/chat2db-server-web-api/src/main/java/ai/chat2db/server/web/api/controller/rdb/vo/ColumnVO.java
+++ b/chat2db-server/chat2db-server-web/chat2db-server-web-api/src/main/java/ai/chat2db/server/web/api/controller/rdb/vo/ColumnVO.java
@@ -38,7 +38,7 @@ public class ColumnVO {
/**
* 是否为空
*/
- private Boolean nullable;
+ private Integer nullable;
/**
* 是否主键
diff --git a/chat2db-server/chat2db-spi/src/main/java/ai/chat2db/spi/jdbc/DefaultMetaService.java b/chat2db-server/chat2db-spi/src/main/java/ai/chat2db/spi/jdbc/DefaultMetaService.java
index e37b9189..002af04c 100644
--- a/chat2db-server/chat2db-spi/src/main/java/ai/chat2db/spi/jdbc/DefaultMetaService.java
+++ b/chat2db-server/chat2db-spi/src/main/java/ai/chat2db/spi/jdbc/DefaultMetaService.java
@@ -3,7 +3,6 @@ package ai.chat2db.spi.jdbc;
import java.sql.Connection;
import java.util.List;
import java.util.Map;
-import java.util.stream.Collectors;
import ai.chat2db.spi.MetaData;
import ai.chat2db.spi.model.Database;
@@ -15,7 +14,6 @@ import ai.chat2db.spi.model.TableColumn;
import ai.chat2db.spi.model.TableIndex;
import ai.chat2db.spi.model.Trigger;
import ai.chat2db.spi.sql.SQLExecutor;
-import org.apache.commons.beanutils.BeanUtils;
/**
* @author jipengfei
@@ -24,25 +22,12 @@ import org.apache.commons.beanutils.BeanUtils;
public class DefaultMetaService implements MetaData {
@Override
public List databases(Connection connection) {
- List dataBases = SQLExecutor.getInstance().databases(connection);
- return dataBases.stream().map(str -> Database.builder().name(str).build()).collect(Collectors.toList());
-
+ return SQLExecutor.getInstance().databases(connection);
}
@Override
public List schemas(Connection connection,String databaseName) {
- List