|
@@ -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());
|