diff --git a/README.md b/README.md
index 108f0c5..65b1a55 100644
--- a/README.md
+++ b/README.md
@@ -118,6 +118,6 @@ ORDER BY s.from_date;
### 后续TODO
+- [x] 支持通过自然语言生成SQL(大模型)
- [ ] 建立字段关系,同步关联更新
-- [ ] 支持通过自然语言生成SQL(大模型)
- [ ] 支持分库分表
diff --git a/pom.xml b/pom.xml
index 64e7fc9..aefbfad 100644
--- a/pom.xml
+++ b/pom.xml
@@ -26,14 +26,42 @@
+
21
+ 1.0.0-M6
+
+
+
+
+ org.springframework.ai
+ spring-ai-bom
+ ${spring-ai.version}
+ pom
+ import
+
+
+
+
org.springframework.boot
spring-boot-starter-web
+
+
+ org.springframework.ai
+ spring-ai-openai-spring-boot-starter
+
+
+
+
org.springframework.boot
spring-boot-starter-test
diff --git a/src/main/java/com/github/zavier/table/relation/service/DataQueryService.java b/src/main/java/com/github/zavier/table/relation/service/DataQueryService.java
index 6c73cb0..81b4f3b 100644
--- a/src/main/java/com/github/zavier/table/relation/service/DataQueryService.java
+++ b/src/main/java/com/github/zavier/table/relation/service/DataQueryService.java
@@ -37,15 +37,12 @@ public Result> getAllSchema() {
}
public Result> getSchemaTables(String schema) {
- Validate.notBlank(schema, "schema can not be blank");
-
- final Optional sourceOptional = dataSourceRegistry.getDataSource(schema);
- if (sourceOptional.isEmpty()) {
- return Result.success(List.of());
+ final Result> tableColumnInfoResult = getTableColumnInfos(schema);
+ if (!tableColumnInfoResult.isSuccess()) {
+ return Result.fail(tableColumnInfoResult.getMessage());
}
- final DataSource dataSource = sourceOptional.get();
- final List tableColumnMetaInfo = mySqlTableMetaInfoQuery.getTableColumnMetaInfo(schema, dataSource);
+ var tableColumnMetaInfo = tableColumnInfoResult.getData();
final List tableNameList = tableColumnMetaInfo.stream().map(TableColumnInfo::tableName)
.sorted()
.toList();
@@ -53,7 +50,6 @@ public Result> getSchemaTables(String schema) {
}
public Result> getTableColumns(String schema, String tableName) {
-
final TableColumnInfo tableColumnMetaInfo = getTableColumnInfo(schema, tableName);
// 列就不进行排序了,保留原始顺序,便于页面查看
@@ -66,6 +62,25 @@ public Result> getTableColumns(String schema, String tableName) {
return Result.success(columnNames);
}
+ public Result> getTableColumnInfos(String schema) {
+ Validate.notBlank(schema, "schema can not be blank");
+
+ final Optional sourceOptional = dataSourceRegistry.getDataSource(schema);
+ if (sourceOptional.isEmpty()) {
+ return Result.success(List.of());
+ }
+ final DataSource dataSource = sourceOptional.get();
+
+ return Result.success(mySqlTableMetaInfoQuery.getTableColumnMetaInfo(schema, dataSource));
+ }
+
+ public Result>> executeSql(String schema, String sql) {
+ Validate.notBlank(schema, "schema can not be blank");
+ Validate.notBlank(sql, "sql can not be blank");
+ final List