diff --git a/chat2db-server/chat2db-plugins/chat2db-mysql/src/main/java/ai/chat2db/plugin/mysql/type/MysqlCollationEnum.java b/chat2db-server/chat2db-plugins/chat2db-mysql/src/main/java/ai/chat2db/plugin/mysql/type/MysqlCollationEnum.java index 1a03b142..120fb3e2 100644 --- a/chat2db-server/chat2db-plugins/chat2db-mysql/src/main/java/ai/chat2db/plugin/mysql/type/MysqlCollationEnum.java +++ b/chat2db-server/chat2db-plugins/chat2db-mysql/src/main/java/ai/chat2db/plugin/mysql/type/MysqlCollationEnum.java @@ -62,6 +62,7 @@ public enum MysqlCollationEnum { return collation; } + public static List getCollations() { return Arrays.asList(MysqlCollationEnum.values()).stream().map(MysqlCollationEnum::getCollation).collect(java.util.stream.Collectors.toList()); } 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 7a963257..54c96f6a 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 @@ -1,5 +1,6 @@ package ai.chat2db.server.web.api.controller.rdb; +import java.sql.Connection; import java.util.List; import ai.chat2db.server.domain.api.param.DlExecuteParam; @@ -12,7 +13,9 @@ import ai.chat2db.server.web.api.controller.rdb.request.DdlCountRequest; import ai.chat2db.server.web.api.controller.rdb.request.DmlRequest; import ai.chat2db.server.web.api.controller.rdb.vo.ExecuteResultVO; import ai.chat2db.spi.model.ExecuteResult; +import ai.chat2db.spi.sql.Chat2DBContext; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.util.CollectionUtils; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; @@ -42,7 +45,7 @@ public class RdbDmlController { * @param request * @return */ - @RequestMapping(value = "/execute",method = {RequestMethod.POST, RequestMethod.PUT}) + @RequestMapping(value = "/execute", method = {RequestMethod.POST, RequestMethod.PUT}) public ListResult manage(@RequestBody DmlRequest request) { DlExecuteParam param = rdbWebConverter.request2param(request); ListResult resultDTOListResult = dlTemplateService.execute(param); @@ -50,6 +53,47 @@ public class RdbDmlController { return ListResult.of(resultVOS); } + + /** + * 增删改查等数据运维 + * + * @param request + * @return + */ + @RequestMapping(value = "/execute_ddl", method = {RequestMethod.POST, RequestMethod.PUT}) + public DataResult executeDDL(@RequestBody DmlRequest request) { + DlExecuteParam param = rdbWebConverter.request2param(request); + Connection connection = Chat2DBContext.getConnection(); + if (connection != null) { + try { + boolean flag = true; + String message = ""; + connection.setAutoCommit(false); + ListResult resultDTOListResult = dlTemplateService.execute(param); + List resultVOS = rdbWebConverter.dto2vo(resultDTOListResult.getData()); + if (!CollectionUtils.isEmpty(resultVOS)) { + for (ExecuteResultVO resultVO : resultVOS) { + if (!resultVO.getSuccess()) { + flag = false; + } + } + } + if (flag) { + connection.commit(); + return DataResult.of(1L); + }else { + connection.rollback(); + return DataResult.error("sql error",message); + } + } catch (Exception e) { + throw new RuntimeException(e); + } + + } else { + return DataResult.error("connection error", ""); + } + } + /** * 统计行的数量 *