mirror of
https://github.com/CodePhiliaX/Chat2DB.git
synced 2025-08-01 18:53:35 +08:00
support function trigger view
This commit is contained in:
@ -0,0 +1,93 @@
|
||||
package ai.chat2db.server.web.api.controller.rdb;
|
||||
|
||||
import ai.chat2db.server.domain.api.param.DatabaseOperationParam;
|
||||
import ai.chat2db.server.domain.api.param.MetaDataQueryParam;
|
||||
import ai.chat2db.server.domain.api.service.DatabaseService;
|
||||
import ai.chat2db.server.domain.api.service.DlTemplateService;
|
||||
import ai.chat2db.server.domain.api.service.TableService;
|
||||
import ai.chat2db.server.tools.base.wrapper.result.ActionResult;
|
||||
import ai.chat2db.server.tools.base.wrapper.result.DataResult;
|
||||
import ai.chat2db.server.web.api.aspect.ConnectionInfoAspect;
|
||||
import ai.chat2db.server.web.api.controller.data.source.request.DataSourceBaseRequest;
|
||||
import ai.chat2db.server.web.api.controller.rdb.converter.RdbWebConverter;
|
||||
import ai.chat2db.server.web.api.controller.rdb.request.UpdateDatabaseRequest;
|
||||
import ai.chat2db.server.web.api.controller.rdb.vo.MetaSchemaVO;
|
||||
import ai.chat2db.spi.model.MetaSchema;
|
||||
import jakarta.validation.Valid;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
@ConnectionInfoAspect
|
||||
@RequestMapping("/api/rdb/datbase")
|
||||
@RestController
|
||||
public class DatabaseController {
|
||||
|
||||
@Autowired
|
||||
private TableService tableService;
|
||||
|
||||
@Autowired
|
||||
private DlTemplateService dlTemplateService;
|
||||
|
||||
@Autowired
|
||||
private RdbWebConverter rdbWebConverter;
|
||||
|
||||
@Autowired
|
||||
private DatabaseService databaseService;
|
||||
/**
|
||||
* 查询数据库里包含的database_schema_list
|
||||
*
|
||||
* @param request
|
||||
* @return
|
||||
*/
|
||||
@GetMapping("/database_schema_list")
|
||||
public DataResult<MetaSchemaVO> databaseSchemaList(@Valid DataSourceBaseRequest request) {
|
||||
MetaDataQueryParam queryParam = MetaDataQueryParam.builder().dataSourceId(request.getDataSourceId()).refresh(
|
||||
request.isRefresh()).build();
|
||||
DataResult<MetaSchema> result = databaseService.queryDatabaseSchema(queryParam);
|
||||
MetaSchemaVO schemaDto2vo = rdbWebConverter.metaSchemaDto2vo(result.getData());
|
||||
return DataResult.of(schemaDto2vo);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 删除数据库
|
||||
*
|
||||
* @param request
|
||||
* @return
|
||||
*/
|
||||
@PostMapping("/delete_database")
|
||||
public ActionResult deleteDatabase(@Valid @RequestBody DataSourceBaseRequest request) {
|
||||
DatabaseOperationParam param = DatabaseOperationParam.builder().databaseName(request.getDatabaseName()).build();
|
||||
return databaseService.deleteDatabase(param);
|
||||
}
|
||||
|
||||
/**
|
||||
* 创建database
|
||||
*
|
||||
* @param request
|
||||
* @return
|
||||
*/
|
||||
@PostMapping("/create_database")
|
||||
public ActionResult createDatabase(@Valid @RequestBody DataSourceBaseRequest request) {
|
||||
DatabaseOperationParam param = DatabaseOperationParam.builder().databaseName(request.getDatabaseName()).build();
|
||||
return databaseService.createDatabase(param);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 修改database
|
||||
*
|
||||
* @param request
|
||||
* @return
|
||||
*/
|
||||
@PostMapping("/modify_database")
|
||||
public ActionResult modifyDatabase(@Valid @RequestBody UpdateDatabaseRequest request) {
|
||||
DatabaseOperationParam param = DatabaseOperationParam.builder().databaseName(request.getDatabaseName())
|
||||
.newDatabaseName(request.getNewDatabaseName()).build();
|
||||
return databaseService.modifyDatabase(param);
|
||||
}
|
||||
}
|
@ -0,0 +1,27 @@
|
||||
package ai.chat2db.server.web.api.controller.rdb;
|
||||
|
||||
import ai.chat2db.server.domain.api.service.FunctionService;
|
||||
import ai.chat2db.server.tools.base.wrapper.result.ListResult;
|
||||
import ai.chat2db.server.web.api.aspect.ConnectionInfoAspect;
|
||||
import ai.chat2db.server.web.api.controller.rdb.request.TableBriefQueryRequest;
|
||||
import ai.chat2db.spi.model.Function;
|
||||
import jakarta.validation.Valid;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
@ConnectionInfoAspect
|
||||
@RequestMapping("/api/rdb/function")
|
||||
@RestController
|
||||
public class FunctionController {
|
||||
|
||||
@Autowired
|
||||
private FunctionService functionService;
|
||||
|
||||
|
||||
@GetMapping("/list")
|
||||
public ListResult<Function> list(@Valid TableBriefQueryRequest request) {
|
||||
return functionService.functions(request.getDatabaseName(), request.getSchemaName());
|
||||
}
|
||||
}
|
@ -0,0 +1,24 @@
|
||||
package ai.chat2db.server.web.api.controller.rdb;
|
||||
|
||||
import ai.chat2db.server.domain.api.service.ProcedureService;
|
||||
import ai.chat2db.server.tools.base.wrapper.result.ListResult;
|
||||
import ai.chat2db.server.web.api.aspect.ConnectionInfoAspect;
|
||||
import ai.chat2db.server.web.api.controller.rdb.request.TableBriefQueryRequest;
|
||||
import ai.chat2db.spi.model.Procedure;
|
||||
import jakarta.validation.Valid;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
@ConnectionInfoAspect
|
||||
@RequestMapping("/api/rdb/procedure")
|
||||
@RestController
|
||||
public class ProcedureController {
|
||||
|
||||
private ProcedureService procedureService;
|
||||
|
||||
@GetMapping("/list")
|
||||
public ListResult<Procedure> list(@Valid TableBriefQueryRequest request) {
|
||||
return procedureService.procedures(request.getDatabaseName(), request.getSchemaName());
|
||||
}
|
||||
}
|
@ -45,6 +45,7 @@ import org.springframework.web.bind.annotation.RestController;
|
||||
@ConnectionInfoAspect
|
||||
@RequestMapping("/api/rdb/ddl")
|
||||
@RestController
|
||||
@Deprecated
|
||||
public class RdbDdlController {
|
||||
|
||||
@Autowired
|
||||
@ -183,6 +184,8 @@ public class RdbDdlController {
|
||||
return databaseService.modifySchema(param);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 查询当前DB下的表columns
|
||||
* d
|
||||
|
@ -0,0 +1,90 @@
|
||||
package ai.chat2db.server.web.api.controller.rdb;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import ai.chat2db.server.domain.api.param.SchemaOperationParam;
|
||||
import ai.chat2db.server.domain.api.param.SchemaQueryParam;
|
||||
import ai.chat2db.server.domain.api.service.DatabaseService;
|
||||
import ai.chat2db.server.domain.api.service.DlTemplateService;
|
||||
import ai.chat2db.server.domain.api.service.TableService;
|
||||
import ai.chat2db.server.tools.base.wrapper.result.ActionResult;
|
||||
import ai.chat2db.server.tools.base.wrapper.result.ListResult;
|
||||
import ai.chat2db.server.web.api.controller.data.source.request.DataSourceBaseRequest;
|
||||
import ai.chat2db.server.web.api.controller.rdb.converter.RdbWebConverter;
|
||||
import ai.chat2db.server.web.api.controller.rdb.request.UpdateSchemaRequest;
|
||||
import ai.chat2db.server.web.api.controller.rdb.vo.SchemaVO;
|
||||
import ai.chat2db.spi.model.Schema;
|
||||
import jakarta.validation.Valid;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
|
||||
public class SchemaController {
|
||||
|
||||
|
||||
@Autowired
|
||||
private TableService tableService;
|
||||
|
||||
@Autowired
|
||||
private DlTemplateService dlTemplateService;
|
||||
|
||||
@Autowired
|
||||
private RdbWebConverter rdbWebConverter;
|
||||
|
||||
@Autowired
|
||||
private DatabaseService databaseService;
|
||||
|
||||
/**
|
||||
* 查询数据库里包含的schema_list
|
||||
*
|
||||
* @param request
|
||||
* @return
|
||||
*/
|
||||
@GetMapping("/list")
|
||||
public ListResult<SchemaVO> list(@Valid DataSourceBaseRequest request) {
|
||||
SchemaQueryParam queryParam = SchemaQueryParam.builder().dataBaseName(request.getDatabaseName()).build();
|
||||
ListResult<Schema> tableColumns = databaseService.querySchema(queryParam);
|
||||
List<SchemaVO> tableVOS = rdbWebConverter.schemaDto2vo(tableColumns.getData());
|
||||
return ListResult.of(tableVOS);
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除schema
|
||||
*
|
||||
* @param request
|
||||
* @return
|
||||
*/
|
||||
@PostMapping("/delete_schema")
|
||||
public ActionResult deleteSchema(@Valid @RequestBody DataSourceBaseRequest request) {
|
||||
SchemaOperationParam param = SchemaOperationParam.builder().databaseName(request.getDatabaseName())
|
||||
.schemaName(request.getSchemaName()).build();
|
||||
return databaseService.deleteSchema(param);
|
||||
}
|
||||
|
||||
/**
|
||||
* 创建schema
|
||||
*
|
||||
* @param request
|
||||
* @return
|
||||
*/
|
||||
@PostMapping("/create_schema")
|
||||
public ActionResult createSchema(@Valid @RequestBody DataSourceBaseRequest request) {
|
||||
SchemaOperationParam param = SchemaOperationParam.builder().databaseName(request.getDatabaseName())
|
||||
.schemaName(request.getSchemaName()).build();
|
||||
return databaseService.createSchema(param);
|
||||
}
|
||||
|
||||
/**
|
||||
* 创建database
|
||||
*
|
||||
* @param request
|
||||
* @return
|
||||
*/
|
||||
@PostMapping("/modify_schema")
|
||||
public ActionResult modifySchema(@Valid @RequestBody UpdateSchemaRequest request) {
|
||||
SchemaOperationParam param = SchemaOperationParam.builder().databaseName(request.getDatabaseName())
|
||||
.schemaName(request.getSchemaName()).newSchemaName(request.getNewSchemaName()).build();
|
||||
return databaseService.modifySchema(param);
|
||||
}
|
||||
}
|
@ -0,0 +1,197 @@
|
||||
package ai.chat2db.server.web.api.controller.rdb;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import ai.chat2db.server.domain.api.param.DropParam;
|
||||
import ai.chat2db.server.domain.api.param.ShowCreateTableParam;
|
||||
import ai.chat2db.server.domain.api.param.TablePageQueryParam;
|
||||
import ai.chat2db.server.domain.api.param.TableQueryParam;
|
||||
import ai.chat2db.server.domain.api.param.TableSelector;
|
||||
import ai.chat2db.server.domain.api.service.DatabaseService;
|
||||
import ai.chat2db.server.domain.api.service.DlTemplateService;
|
||||
import ai.chat2db.server.domain.api.service.TableService;
|
||||
import ai.chat2db.server.tools.base.wrapper.result.ActionResult;
|
||||
import ai.chat2db.server.tools.base.wrapper.result.DataResult;
|
||||
import ai.chat2db.server.tools.base.wrapper.result.ListResult;
|
||||
import ai.chat2db.server.tools.base.wrapper.result.PageResult;
|
||||
import ai.chat2db.server.tools.base.wrapper.result.web.WebPageResult;
|
||||
import ai.chat2db.server.web.api.aspect.ConnectionInfoAspect;
|
||||
import ai.chat2db.server.web.api.controller.rdb.converter.RdbWebConverter;
|
||||
import ai.chat2db.server.web.api.controller.rdb.request.DdlExportRequest;
|
||||
import ai.chat2db.server.web.api.controller.rdb.request.TableBriefQueryRequest;
|
||||
import ai.chat2db.server.web.api.controller.rdb.request.TableCreateDdlQueryRequest;
|
||||
import ai.chat2db.server.web.api.controller.rdb.request.TableDeleteRequest;
|
||||
import ai.chat2db.server.web.api.controller.rdb.request.TableDetailQueryRequest;
|
||||
import ai.chat2db.server.web.api.controller.rdb.request.TableModifySqlRequest;
|
||||
import ai.chat2db.server.web.api.controller.rdb.request.TableUpdateDdlQueryRequest;
|
||||
import ai.chat2db.server.web.api.controller.rdb.vo.ColumnVO;
|
||||
import ai.chat2db.server.web.api.controller.rdb.vo.IndexVO;
|
||||
import ai.chat2db.server.web.api.controller.rdb.vo.SqlVO;
|
||||
import ai.chat2db.server.web.api.controller.rdb.vo.TableVO;
|
||||
import ai.chat2db.spi.model.Table;
|
||||
import ai.chat2db.spi.model.TableColumn;
|
||||
import ai.chat2db.spi.model.TableIndex;
|
||||
import com.google.common.collect.Lists;
|
||||
import jakarta.validation.Valid;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
@ConnectionInfoAspect
|
||||
@RequestMapping("/api/rdb/table")
|
||||
@RestController
|
||||
public class TableController {
|
||||
|
||||
@Autowired
|
||||
private TableService tableService;
|
||||
|
||||
@Autowired
|
||||
private DlTemplateService dlTemplateService;
|
||||
|
||||
@Autowired
|
||||
private RdbWebConverter rdbWebConverter;
|
||||
|
||||
@Autowired
|
||||
private DatabaseService databaseService;
|
||||
|
||||
|
||||
/**
|
||||
* 查询当前DB下的表列表
|
||||
*
|
||||
* @param request
|
||||
* @return
|
||||
*/
|
||||
@GetMapping("/list")
|
||||
public WebPageResult<TableVO> list(@Valid TableBriefQueryRequest request) {
|
||||
TablePageQueryParam queryParam = rdbWebConverter.tablePageRequest2param(request);
|
||||
TableSelector tableSelector = new TableSelector();
|
||||
tableSelector.setColumnList(false);
|
||||
tableSelector.setIndexList(false);
|
||||
PageResult<Table> tableDTOPageResult = tableService.pageQuery(queryParam, tableSelector);
|
||||
List<TableVO> tableVOS = rdbWebConverter.tableDto2vo(tableDTOPageResult.getData());
|
||||
return WebPageResult.of(tableVOS, tableDTOPageResult.getTotal(), request.getPageNo(),
|
||||
request.getPageSize());
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 查询当前DB下的表columns
|
||||
* d
|
||||
*
|
||||
* @param request
|
||||
* @return
|
||||
*/
|
||||
@GetMapping("/column_list")
|
||||
public ListResult<ColumnVO> columnList(@Valid TableDetailQueryRequest request) {
|
||||
TableQueryParam queryParam = rdbWebConverter.tableRequest2param(request);
|
||||
List<TableColumn> tableColumns = tableService.queryColumns(queryParam);
|
||||
List<ColumnVO> tableVOS = rdbWebConverter.columnDto2vo(tableColumns);
|
||||
return ListResult.of(tableVOS);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询当前DB下的表index
|
||||
*
|
||||
* @param request
|
||||
* @return
|
||||
*/
|
||||
@GetMapping("/index_list")
|
||||
public ListResult<IndexVO> indexList(@Valid TableDetailQueryRequest request) {
|
||||
TableQueryParam queryParam = rdbWebConverter.tableRequest2param(request);
|
||||
List<TableIndex> tableIndices = tableService.queryIndexes(queryParam);
|
||||
List<IndexVO> indexVOS = rdbWebConverter.indexDto2vo(tableIndices);
|
||||
return ListResult.of(indexVOS);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询当前DB下的表key
|
||||
*
|
||||
* @param request
|
||||
* @return
|
||||
*/
|
||||
@GetMapping("/key_list")
|
||||
public ListResult<IndexVO> keyList(@Valid TableDetailQueryRequest request) {
|
||||
// TODO 增加查询key实现
|
||||
return ListResult.of(Lists.newArrayList());
|
||||
}
|
||||
|
||||
/**
|
||||
* 导出建表语句
|
||||
*
|
||||
* @param request
|
||||
* @return
|
||||
*/
|
||||
@GetMapping("/export")
|
||||
public DataResult<String> export(@Valid DdlExportRequest request) {
|
||||
ShowCreateTableParam param = rdbWebConverter.ddlExport2showCreate(request);
|
||||
return tableService.showCreateTable(param);
|
||||
}
|
||||
|
||||
/**
|
||||
* 建表语句样例
|
||||
*
|
||||
* @param request
|
||||
* @return
|
||||
*/
|
||||
@GetMapping("/create/example")
|
||||
public DataResult<String> createExample(@Valid TableCreateDdlQueryRequest request) {
|
||||
return tableService.createTableExample(request.getDbType());
|
||||
}
|
||||
|
||||
/**
|
||||
* 更新表语句样例
|
||||
*
|
||||
* @param request
|
||||
* @return
|
||||
*/
|
||||
@GetMapping("/update/example")
|
||||
public DataResult<String> updateExample(@Valid TableUpdateDdlQueryRequest request) {
|
||||
return tableService.alterTableExample(request.getDbType());
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取表下列和索引等信息
|
||||
*
|
||||
* @param request
|
||||
* @return
|
||||
*/
|
||||
@GetMapping("/query")
|
||||
public DataResult<TableVO> query(@Valid TableDetailQueryRequest request) {
|
||||
TableQueryParam queryParam = rdbWebConverter.tableRequest2param(request);
|
||||
TableSelector tableSelector = new TableSelector();
|
||||
tableSelector.setColumnList(true);
|
||||
tableSelector.setIndexList(true);
|
||||
DataResult<Table> tableDTODataResult = tableService.query(queryParam, tableSelector);
|
||||
TableVO tableVO = rdbWebConverter.tableDto2vo(tableDTODataResult.getData());
|
||||
return DataResult.of(tableVO);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取修改表的sql语句
|
||||
*
|
||||
* @param request
|
||||
* @return
|
||||
*/
|
||||
@GetMapping("/modify/sql")
|
||||
public ListResult<SqlVO> modifySql(@Valid TableModifySqlRequest request) {
|
||||
return tableService.buildSql(
|
||||
rdbWebConverter.tableRequest2param(request.getOldTable()),
|
||||
rdbWebConverter.tableRequest2param(request.getNewTable()))
|
||||
.map(rdbWebConverter::dto2vo);
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除表
|
||||
*
|
||||
* @param request
|
||||
* @return
|
||||
*/
|
||||
@PostMapping("/delete")
|
||||
public ActionResult delete(@Valid @RequestBody TableDeleteRequest request) {
|
||||
DropParam dropParam = rdbWebConverter.tableDelete2dropParam(request);
|
||||
return tableService.drop(dropParam);
|
||||
}
|
||||
}
|
@ -0,0 +1,27 @@
|
||||
package ai.chat2db.server.web.api.controller.rdb;
|
||||
|
||||
import ai.chat2db.server.domain.api.service.TriggerService;
|
||||
import ai.chat2db.server.tools.base.wrapper.result.ListResult;
|
||||
import ai.chat2db.server.web.api.aspect.ConnectionInfoAspect;
|
||||
import ai.chat2db.server.web.api.controller.rdb.request.TableBriefQueryRequest;
|
||||
import ai.chat2db.spi.model.Trigger;
|
||||
import jakarta.validation.Valid;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
@ConnectionInfoAspect
|
||||
@RequestMapping("/api/rdb/trigger")
|
||||
@RestController
|
||||
public class TriggerController {
|
||||
|
||||
@Autowired
|
||||
private TriggerService triggerService;
|
||||
|
||||
|
||||
@GetMapping("/list")
|
||||
public ListResult<Trigger> list(@Valid TableBriefQueryRequest request) {
|
||||
return triggerService.triggers(request.getDatabaseName(), request.getSchemaName());
|
||||
}
|
||||
}
|
@ -0,0 +1,35 @@
|
||||
package ai.chat2db.server.web.api.controller.rdb;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import ai.chat2db.server.domain.api.service.ViewService;
|
||||
import ai.chat2db.server.tools.base.wrapper.result.ListResult;
|
||||
import ai.chat2db.server.web.api.aspect.ConnectionInfoAspect;
|
||||
import ai.chat2db.server.web.api.controller.rdb.converter.RdbWebConverter;
|
||||
import ai.chat2db.server.web.api.controller.rdb.request.TableBriefQueryRequest;
|
||||
import ai.chat2db.server.web.api.controller.rdb.vo.TableVO;
|
||||
import ai.chat2db.spi.model.Table;
|
||||
import jakarta.validation.Valid;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
@ConnectionInfoAspect
|
||||
@RequestMapping("/api/rdb/view")
|
||||
@RestController
|
||||
public class ViewController {
|
||||
@Autowired
|
||||
private ViewService viewService;
|
||||
|
||||
|
||||
@Autowired
|
||||
private RdbWebConverter rdbWebConverter;
|
||||
|
||||
@GetMapping("/list")
|
||||
public ListResult<TableVO> list(@Valid TableBriefQueryRequest request) {
|
||||
ListResult<Table> tableDTOPageResult = viewService.views(request.getDatabaseName(), request.getSchemaName());
|
||||
List<TableVO> tableVOS = rdbWebConverter.tableDto2vo(tableDTOPageResult.getData());
|
||||
return ListResult.of(tableVOS);
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user