diff --git a/chat2db-server/chat2db-plugins/chat2db-db2/src/main/java/ai/chat2db/plugin/db2/DB2MetaData.java b/chat2db-server/chat2db-plugins/chat2db-db2/src/main/java/ai/chat2db/plugin/db2/DB2MetaData.java index 90a0e2fa..fef4d734 100644 --- a/chat2db-server/chat2db-plugins/chat2db-db2/src/main/java/ai/chat2db/plugin/db2/DB2MetaData.java +++ b/chat2db-server/chat2db-plugins/chat2db-db2/src/main/java/ai/chat2db/plugin/db2/DB2MetaData.java @@ -21,6 +21,7 @@ import ai.chat2db.spi.model.TableMeta; import ai.chat2db.spi.sql.SQLExecutor; import ai.chat2db.spi.util.SortUtils; import com.google.common.collect.Lists; +import org.apache.commons.lang3.StringUtils; public class DB2MetaData extends DefaultMetaService implements MetaData { @@ -156,5 +157,9 @@ public class DB2MetaData extends DefaultMetaService implements MetaData { .defaultValues(DB2DefaultValueEnum.getDefaultValues()) .build(); } + @Override + public String getMetaDataName(String... names) { + return Arrays.stream(names).filter(name -> StringUtils.isNotBlank(name)).map(name -> "\"" + name + "\"").collect(Collectors.joining(".")); + } } diff --git a/chat2db-server/chat2db-plugins/chat2db-h2/src/main/java/ai/chat2db/plugin/h2/H2Meta.java b/chat2db-server/chat2db-plugins/chat2db-h2/src/main/java/ai/chat2db/plugin/h2/H2Meta.java index 7bd1082e..f5c72561 100644 --- a/chat2db-server/chat2db-plugins/chat2db-h2/src/main/java/ai/chat2db/plugin/h2/H2Meta.java +++ b/chat2db-server/chat2db-plugins/chat2db-h2/src/main/java/ai/chat2db/plugin/h2/H2Meta.java @@ -4,6 +4,7 @@ import java.sql.Connection; import java.sql.ResultSet; import java.sql.ResultSetMetaData; import java.util.*; +import java.util.stream.Collectors; import ai.chat2db.plugin.h2.builder.H2SqlBuilder; import ai.chat2db.spi.MetaData; @@ -14,6 +15,7 @@ import ai.chat2db.spi.model.*; import ai.chat2db.spi.sql.SQLExecutor; import ai.chat2db.spi.util.SortUtils; import jakarta.validation.constraints.NotEmpty; +import org.apache.commons.lang3.StringUtils; public class H2Meta extends DefaultMetaService implements MetaData { @@ -198,4 +200,9 @@ public class H2Meta extends DefaultMetaService implements MetaData { return new H2SqlBuilder(); } + + @Override + public String getMetaDataName(String... names) { + return Arrays.stream(names).filter(name -> StringUtils.isNotBlank(name)).map(name -> "\"" + name + "\"").collect(Collectors.joining(".")); + } } diff --git a/chat2db-server/chat2db-plugins/chat2db-mongodb/src/main/java/ai/chat2db/plugin/mongodb/MongodbMetaData.java b/chat2db-server/chat2db-plugins/chat2db-mongodb/src/main/java/ai/chat2db/plugin/mongodb/MongodbMetaData.java index 9cc1b7e4..4716d88e 100644 --- a/chat2db-server/chat2db-plugins/chat2db-mongodb/src/main/java/ai/chat2db/plugin/mongodb/MongodbMetaData.java +++ b/chat2db-server/chat2db-plugins/chat2db-mongodb/src/main/java/ai/chat2db/plugin/mongodb/MongodbMetaData.java @@ -2,8 +2,19 @@ package ai.chat2db.plugin.mongodb; import ai.chat2db.spi.MetaData; import ai.chat2db.spi.jdbc.DefaultMetaService; +import ai.chat2db.spi.model.Database; +import ai.chat2db.spi.sql.SQLExecutor; +import com.google.common.collect.Lists; + +import java.sql.Connection; +import java.util.List; + public class MongodbMetaData extends DefaultMetaService implements MetaData { + @Override + public List databases(Connection connection) { + return Lists.newArrayList(); + } } 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 3b0aa372..29d55a1c 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,6 +1,6 @@ { "dbType": "MONGODB", - "supportDatabase": true, + "supportDatabase": false, "supportSchema": true, "driverConfigList": [ { diff --git a/chat2db-server/chat2db-plugins/chat2db-oceanbase/src/main/java/ai/chat2db/plugin/oceanbase/OceanBaseMetaData.java b/chat2db-server/chat2db-plugins/chat2db-oceanbase/src/main/java/ai/chat2db/plugin/oceanbase/OceanBaseMetaData.java index 30eb940e..2c1020fa 100644 --- a/chat2db-server/chat2db-plugins/chat2db-oceanbase/src/main/java/ai/chat2db/plugin/oceanbase/OceanBaseMetaData.java +++ b/chat2db-server/chat2db-plugins/chat2db-oceanbase/src/main/java/ai/chat2db/plugin/oceanbase/OceanBaseMetaData.java @@ -4,4 +4,6 @@ import ai.chat2db.spi.MetaData; import ai.chat2db.spi.jdbc.DefaultMetaService; public class OceanBaseMetaData extends DefaultMetaService implements MetaData { + + } diff --git a/chat2db-server/chat2db-plugins/chat2db-postgresql/src/main/java/ai/chat2db/plugin/postgresql/PostgreSQLMetaData.java b/chat2db-server/chat2db-plugins/chat2db-postgresql/src/main/java/ai/chat2db/plugin/postgresql/PostgreSQLMetaData.java index 4d46c647..26e566ed 100644 --- a/chat2db-server/chat2db-plugins/chat2db-postgresql/src/main/java/ai/chat2db/plugin/postgresql/PostgreSQLMetaData.java +++ b/chat2db-server/chat2db-plugins/chat2db-postgresql/src/main/java/ai/chat2db/plugin/postgresql/PostgreSQLMetaData.java @@ -302,4 +302,8 @@ public class PostgreSQLMetaData extends DefaultMetaService implements MetaData { .build(); } + @Override + public String getMetaDataName(String... names) { + return Arrays.stream(names).filter(name -> StringUtils.isNotBlank(name)).map(name -> "\"" + name + "\"").collect(Collectors.joining(".")); + } } diff --git a/chat2db-server/chat2db-server-web/chat2db-server-web-api/pom.xml b/chat2db-server/chat2db-server-web/chat2db-server-web-api/pom.xml index a6e7589f..02e3e7a2 100644 --- a/chat2db-server/chat2db-server-web/chat2db-server-web-api/pom.xml +++ b/chat2db-server/chat2db-server-web/chat2db-server-web-api/pom.xml @@ -96,11 +96,9 @@ org.springframework spring-context - - com.manticore-projects.jsqlformatter - jsqlformatter - 1.0.0 + com.github.vertical-blank + sql-formatter diff --git a/chat2db-server/chat2db-server-web/chat2db-server-web-api/src/main/java/ai/chat2db/server/web/api/controller/rdb/RdbDmlController.java b/chat2db-server/chat2db-server-web/chat2db-server-web-api/src/main/java/ai/chat2db/server/web/api/controller/rdb/RdbDmlController.java index 65e8c230..41a83c7e 100644 --- a/chat2db-server/chat2db-server-web/chat2db-server-web-api/src/main/java/ai/chat2db/server/web/api/controller/rdb/RdbDmlController.java +++ b/chat2db-server/chat2db-server-web/chat2db-server-web-api/src/main/java/ai/chat2db/server/web/api/controller/rdb/RdbDmlController.java @@ -23,6 +23,7 @@ import ai.chat2db.server.web.api.controller.rdb.vo.ExecuteResultVO; import ai.chat2db.server.web.api.http.GatewayClientService; import ai.chat2db.server.web.api.http.request.SqlExecuteHistoryCreateRequest; import ai.chat2db.server.web.api.util.ApplicationContextUtil; +import ai.chat2db.spi.MetaData; import ai.chat2db.spi.model.ExecuteResult; import ai.chat2db.spi.sql.Chat2DBContext; import com.google.common.collect.Lists; @@ -124,11 +125,12 @@ public class RdbDmlController { if (DataSourceTypeEnum.MONGODB.getCode().equals(type)) { param.setSql("db." + request.getTableName() + ".find()"); } else { + MetaData metaData = Chat2DBContext.getMetaData(); // 拼接`tableName`,避免关键字被占用问题 - param.setSql("select * from " +"`"+ request.getTableName()+"`"); + param.setSql("select * from " + metaData.getMetaDataName(request.getTableName())); } return dlTemplateService.execute(param) - .map(rdbWebConverter::dto2vo); + .map(rdbWebConverter::dto2vo); } /** diff --git a/chat2db-server/chat2db-server-web/chat2db-server-web-api/src/main/java/ai/chat2db/server/web/api/controller/sql/SqlController.java b/chat2db-server/chat2db-server-web/chat2db-server-web-api/src/main/java/ai/chat2db/server/web/api/controller/sql/SqlController.java index d7b8e0b2..97e3b1e6 100644 --- a/chat2db-server/chat2db-server-web/chat2db-server-web-api/src/main/java/ai/chat2db/server/web/api/controller/sql/SqlController.java +++ b/chat2db-server/chat2db-server-web/chat2db-server-web-api/src/main/java/ai/chat2db/server/web/api/controller/sql/SqlController.java @@ -3,7 +3,7 @@ package ai.chat2db.server.web.api.controller.sql; import ai.chat2db.server.tools.base.wrapper.result.DataResult; import ai.chat2db.server.web.api.aspect.ConnectionInfoAspect; import ai.chat2db.server.web.api.controller.sql.request.SqlFormatRequest; -import com.manticore.jsqlformatter.JSQLFormatter; +import com.github.vertical_blank.sqlformatter.SqlFormatter; import jakarta.validation.Valid; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; @@ -27,7 +27,7 @@ public class SqlController { public DataResult list(@Valid SqlFormatRequest sqlFormatRequest) { String sql = sqlFormatRequest.getSql(); try { - sql = JSQLFormatter.format(sql); + sql = SqlFormatter.format(sql); } catch (Exception e) { // ignore } diff --git a/chat2db-server/pom.xml b/chat2db-server/pom.xml index 01b56ab9..16c69347 100644 --- a/chat2db-server/pom.xml +++ b/chat2db-server/pom.xml @@ -313,7 +313,11 @@ bson 4.11.1 - + + com.github.vertical-blank + sql-formatter + 2.0.4 +