Prechádzať zdrojové kódy

优化数据库维护

zhou-hao 7 rokov pred
rodič
commit
3e509a9d3b

+ 1 - 0
hsweb-system/hsweb-system-database-manager/hsweb-system-database-manager-api/src/main/java/org/hswebframework/web/database/manager/SqlExecuteRequest.java

@@ -16,6 +16,7 @@ import java.util.List;
 @NoArgsConstructor
 @AllArgsConstructor
 public class SqlExecuteRequest implements Serializable{
+    private static final long serialVersionUID = 8640714319329779262L;
     private List<SqlInfo> sql;
 
 }

+ 6 - 16
hsweb-system/hsweb-system-database-manager/hsweb-system-database-manager-api/src/main/java/org/hswebframework/web/database/manager/SqlInfo.java

@@ -1,28 +1,18 @@
 package org.hswebframework.web.database.manager;
 
+import lombok.Data;
+
 import java.io.Serializable;
 
 /**
  * @author zhouhao
  */
+@Data
 public class SqlInfo implements Serializable {
+    private static final long serialVersionUID = -2119739552930123239L;
     private String sql;
 
-    private String type;
-
-    public String getSql() {
-        return sql;
-    }
+    private String datasourceId;
 
-    public void setSql(String sql) {
-        this.sql = sql;
-    }
-
-    public String getType() {
-        return type;
-    }
-
-    public void setType(String type) {
-        this.type = type;
-    }
+    private String type;
 }

+ 8 - 1
hsweb-system/hsweb-system-database-manager/hsweb-system-database-manager-api/src/main/java/org/hswebframework/web/database/manager/exception/SqlExecuteException.java

@@ -1,10 +1,17 @@
 package org.hswebframework.web.database.manager.exception;
 
-public class SqlExecuteException extends RuntimeException {
+import org.hswebframework.web.BusinessException;
+
+public class SqlExecuteException extends BusinessException {
+    private static final long serialVersionUID = -2109245893594218935L;
     private String sql;
 
     public SqlExecuteException(String message, Throwable cause, String sql) {
         super(message, cause);
         this.sql = sql;
     }
+
+    public String getSql() {
+        return sql;
+    }
 }

+ 0 - 1
hsweb-system/hsweb-system-database-manager/hsweb-system-database-manager-api/src/main/java/org/hswebframework/web/database/manager/sql/SqlExecutor.java

@@ -7,5 +7,4 @@ import java.util.List;
 
 public interface SqlExecutor {
     List<SqlExecuteResult> execute(SqlExecuteRequest request)throws Exception;
-
 }

+ 1 - 0
hsweb-system/hsweb-system-database-manager/hsweb-system-database-manager-api/src/main/java/org/hswebframework/web/database/manager/sql/TransactionInfo.java

@@ -10,6 +10,7 @@ import java.util.List;
 
 @Data
 public class TransactionInfo implements Serializable {
+    private static final long serialVersionUID = -4174268983558799472L;
     private String id;
 
     private List<SqlInfo> sqlHistory=new ArrayList<>();

+ 30 - 23
hsweb-system/hsweb-system-database-manager/hsweb-system-database-manager-web/src/main/java/org/hswebframework/web/database/manager/web/DataBaseManagerController.java

@@ -2,6 +2,7 @@ package org.hswebframework.web.database.manager.web;
 
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiParam;
 import org.hswebframework.web.Sqls;
 import org.hswebframework.web.authorization.Permission;
 import org.hswebframework.web.authorization.annotation.Authorize;
@@ -14,6 +15,7 @@ import org.hswebframework.web.database.manager.meta.ObjectMetadata;
 import org.hswebframework.web.database.manager.sql.TransactionInfo;
 import org.hswebframework.web.datasource.DataSourceHolder;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.MediaType;
 import org.springframework.web.bind.annotation.*;
 
 import java.util.List;
@@ -22,60 +24,64 @@ import java.util.stream.Collectors;
 
 @RestController
 @RequestMapping("/database/manager")
-@Api(value = "开发人员工具-数据库维护", description = "数据库维护")
-@Authorize(permission = "database-manager",description = "数据库维护")
+@Api(tags = "开发人员工具-数据库维护", value = "数据库维护")
+@Authorize(permission = "database-manager", description = "数据库维护")
 public class DataBaseManagerController {
 
     @Autowired
     private DatabaseManagerService databaseManagerService;
 
     @GetMapping("/metas")
-    @Authorize(action = Permission.ACTION_QUERY)
+    @Authorize(action = Permission.ACTION_QUERY, description = "获取元数据")
     @ApiOperation("获取数据库元数据")
     public ResponseMessage<Map<ObjectMetadata.ObjectType, List<? extends ObjectMetadata>>> parseAllObject() throws Exception {
         return parseAllObject(null);
     }
 
     @GetMapping("/metas/{datasourceId}")
-    @Authorize(action = Permission.ACTION_QUERY)
+    @Authorize(action = Permission.ACTION_QUERY, description = "获取元数据")
     @ApiOperation("获取指定数据源的元数据")
-    public ResponseMessage<Map<ObjectMetadata.ObjectType, List<? extends ObjectMetadata>>> parseAllObject(@PathVariable String datasourceId) throws Exception {
+    public ResponseMessage<Map<ObjectMetadata.ObjectType, List<? extends ObjectMetadata>>> parseAllObject(
+            @PathVariable
+            @ApiParam("数据源ID") String datasourceId) throws Exception {
+
         DataSourceHolder.switcher().use(datasourceId);
         return ResponseMessage.ok(databaseManagerService.getMetas());
     }
 
-    @PostMapping("/execute/{datasourceId}")
+    @PostMapping(value = "/execute/{datasourceId}", consumes = MediaType.TEXT_PLAIN_VALUE)
     @Authorize(action = "execute", description = "执行SQL")
-    @ApiOperation("指定数据源执行SQL")
+    @ApiOperation(value = "指定数据源执行SQL")
     public ResponseMessage<List<SqlExecuteResult>> execute(
-            @PathVariable String datasourceId
-            , @RequestBody String sqlLines) throws Exception {
+            @PathVariable @ApiParam("数据源ID") String datasourceId,
+            @RequestBody @ApiParam("SQL脚本") String sqlLines) throws Exception {
+
         DataSourceHolder.switcher().use(datasourceId);
-        return ResponseMessage.ok(databaseManagerService
-                .execute(SqlExecuteRequest.builder()
-                        .sql(parseSql(sqlLines))
-                        .build()));
+        return ResponseMessage.ok(databaseManagerService.execute(SqlExecuteRequest.builder()
+                .sql(parseSql(sqlLines))
+                .build()));
 
     }
 
-    @PostMapping("/execute")
-    @ApiOperation("执行SQL")
+    @PostMapping(value = "/execute", consumes = MediaType.TEXT_PLAIN_VALUE)
+    @ApiOperation(value = "执行SQL")
     @Authorize(action = "execute", description = "执行SQL")
-    public ResponseMessage<List<SqlExecuteResult>> execute(@RequestBody String sqlLines) throws Exception {
+    public ResponseMessage<List<SqlExecuteResult>> execute(@RequestBody
+                                                           @ApiParam("SQL脚本") String sqlLines) throws Exception {
         return ResponseMessage.ok(databaseManagerService
                 .execute(SqlExecuteRequest.builder()
                         .sql(parseSql(sqlLines))
                         .build()));
     }
 
-    @PostMapping("/transactional/execute/{transactionalId}")
+    @PostMapping(value = "/transactional/execute/{transactionalId}", consumes = MediaType.TEXT_PLAIN_VALUE)
     @Authorize(action = "execute", description = "执行SQL")
-    @ApiOperation("开启事务执行SQL")
-    public ResponseMessage<List<SqlExecuteResult>> executeTransactional(@PathVariable String transactionalId, @RequestBody String sqlLines) throws Exception {
-        return ResponseMessage.ok(databaseManagerService
-                .execute(transactionalId,SqlExecuteRequest.builder()
-                        .sql(parseSql(sqlLines))
-                        .build()));
+    @ApiOperation(value = "开启事务执行SQL")
+    public ResponseMessage<List<SqlExecuteResult>> executeTransactional(@PathVariable @ApiParam("事务ID") String transactionalId,
+                                                                        @ApiParam("SQL脚本") @RequestBody String sqlLines) throws Exception {
+        return ResponseMessage.ok(databaseManagerService.execute(transactionalId, SqlExecuteRequest.builder()
+                .sql(parseSql(sqlLines))
+                .build()));
     }
 
     @GetMapping("/transactional/new")
@@ -113,6 +119,7 @@ public class DataBaseManagerController {
         return sqlList.stream().map(sql -> {
             SqlInfo sqlInfo = new SqlInfo();
             sqlInfo.setSql(sql);
+            sqlInfo.setDatasourceId(DataSourceHolder.switcher().currentDataSourceId());
             sqlInfo.setType(sql.split("[ ]")[0].toLowerCase());
             return sqlInfo;
         }).collect(Collectors.toList());