support view trigger producer function

This commit is contained in:
jipengfei-jpf
2023-08-12 15:43:15 +08:00
parent 9fa8720786
commit 59b31f5e41
25 changed files with 745 additions and 276 deletions

View File

@ -5,6 +5,7 @@ import ai.chat2db.server.domain.api.model.DataSource;
import ai.chat2db.server.domain.api.service.DataSourceService;
import ai.chat2db.server.tools.base.wrapper.result.DataResult;
import ai.chat2db.server.tools.common.exception.ParamBusinessException;
import ai.chat2db.server.web.api.controller.data.source.request.DataSourceBaseRequest;
import ai.chat2db.server.web.api.controller.data.source.request.DataSourceBaseRequestInfo;
import ai.chat2db.server.web.api.controller.data.source.request.DataSourceConsoleRequestInfo;
import ai.chat2db.spi.config.DriverConfig;
@ -36,11 +37,16 @@ public class ConnectionInfoHandler {
if (params != null && params.length > 0) {
for (int i = 0; i < params.length; i++) {
Object param = params[i];
if (param instanceof DataSourceConsoleRequestInfo) {
if(param instanceof DataSourceBaseRequest){
Long dataSourceId = ((DataSourceBaseRequest)param).getDataSourceId();
String schemaName = ((DataSourceBaseRequest)param).getSchemaName();
String database = ((DataSourceBaseRequest)param).getDatabaseName();
Chat2DBContext.putContext(toInfo(dataSourceId, database, null,schemaName));
}else if (param instanceof DataSourceConsoleRequestInfo) {
Long dataSourceId = ((DataSourceConsoleRequestInfo)param).getDataSourceId();
Long consoleId = ((DataSourceConsoleRequestInfo)param).getConsoleId();
String database = ((DataSourceConsoleRequestInfo)param).getDatabaseName();
Chat2DBContext.putContext(toInfo(dataSourceId, database, consoleId));
Chat2DBContext.putContext(toInfo(dataSourceId, database, consoleId,null));
} else if (param instanceof DataSourceBaseRequestInfo) {
Long dataSourceId = ((DataSourceBaseRequestInfo)param).getDataSourceId();
String database = ((DataSourceBaseRequestInfo)param).getDatabaseName();
@ -54,7 +60,7 @@ public class ConnectionInfoHandler {
}
}
public ConnectInfo toInfo(Long dataSourceId, String database, Long consoleId) {
public ConnectInfo toInfo(Long dataSourceId, String database, Long consoleId,String schemaName) {
DataResult<DataSource> result = dataSourceService.queryById(dataSourceId);
DataSource dataSource = result.getData();
if (!result.success() || dataSource == null) {
@ -69,6 +75,7 @@ public class ConnectionInfoHandler {
connectInfo.setDbType(dataSource.getType());
connectInfo.setUrl(dataSource.getUrl());
connectInfo.setDatabase(database);
connectInfo.setSchemaName(schemaName);
connectInfo.setConsoleOwn(false);
connectInfo.setDriver(dataSource.getDriver());
connectInfo.setSsh(dataSource.getSsh());
@ -86,6 +93,6 @@ public class ConnectionInfoHandler {
}
public ConnectInfo toInfo(Long dataSourceId, String database) {
return toInfo(dataSourceId, database, null);
return toInfo(dataSourceId, database, null,null);
}
}

View File

@ -2,6 +2,7 @@ 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.tools.base.wrapper.result.web.WebPageResult;
import ai.chat2db.server.web.api.aspect.ConnectionInfoAspect;
import ai.chat2db.server.web.api.controller.rdb.request.TableBriefQueryRequest;
import ai.chat2db.spi.model.Function;
@ -19,9 +20,12 @@ public class FunctionController {
@Autowired
private FunctionService functionService;
@GetMapping("/list")
public ListResult<Function> list(@Valid TableBriefQueryRequest request) {
return functionService.functions(request.getDatabaseName(), request.getSchemaName());
public WebPageResult<Function> list(@Valid TableBriefQueryRequest request) {
ListResult<Function> functionListResult = functionService.functions(request.getDatabaseName(),
request.getSchemaName());
return WebPageResult.of(functionListResult.getData(), Long.valueOf(functionListResult.getData().size()), 1,
functionListResult.getData().size());
}
}

View File

@ -2,6 +2,7 @@ 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.tools.base.wrapper.result.web.WebPageResult;
import ai.chat2db.server.web.api.aspect.ConnectionInfoAspect;
import ai.chat2db.server.web.api.controller.rdb.request.TableBriefQueryRequest;
import ai.chat2db.spi.model.Procedure;
@ -18,7 +19,10 @@ public class ProcedureController {
private ProcedureService procedureService;
@GetMapping("/list")
public ListResult<Procedure> list(@Valid TableBriefQueryRequest request) {
return procedureService.procedures(request.getDatabaseName(), request.getSchemaName());
public WebPageResult<Procedure> list(@Valid TableBriefQueryRequest request) {
ListResult<Procedure> procedureListResult = procedureService.procedures(request.getDatabaseName(),
request.getSchemaName());
return WebPageResult.of(procedureListResult.getData(), Long.valueOf(procedureListResult.getData().size()), 1,
procedureListResult.getData().size());
}
}

View File

@ -2,6 +2,7 @@ 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.tools.base.wrapper.result.web.WebPageResult;
import ai.chat2db.server.web.api.aspect.ConnectionInfoAspect;
import ai.chat2db.server.web.api.controller.rdb.request.TableBriefQueryRequest;
import ai.chat2db.spi.model.Trigger;
@ -19,9 +20,10 @@ public class TriggerController {
@Autowired
private TriggerService triggerService;
@GetMapping("/list")
public ListResult<Trigger> list(@Valid TableBriefQueryRequest request) {
return triggerService.triggers(request.getDatabaseName(), request.getSchemaName());
public WebPageResult<Trigger> list(@Valid TableBriefQueryRequest request) {
ListResult<Trigger> listResult = triggerService.triggers(request.getDatabaseName(), request.getSchemaName());
return WebPageResult.of(listResult.getData(), Long.valueOf(listResult.getData().size()), 1,
listResult.getData().size());
}
}

View File

@ -2,16 +2,27 @@ 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.TableQueryParam;
import ai.chat2db.server.domain.api.service.TableService;
import ai.chat2db.server.domain.api.service.ViewService;
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.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.TableBriefQueryRequest;
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.vo.ColumnVO;
import ai.chat2db.server.web.api.controller.rdb.vo.TableVO;
import ai.chat2db.spi.model.Table;
import ai.chat2db.spi.model.TableColumn;
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.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@ -22,14 +33,39 @@ public class ViewController {
@Autowired
private ViewService viewService;
@Autowired
private TableService tableService;
@Autowired
private RdbWebConverter rdbWebConverter;
@GetMapping("/list")
public ListResult<TableVO> list(@Valid TableBriefQueryRequest request) {
public WebPageResult<TableVO> list(@Valid TableBriefQueryRequest request) {
ListResult<Table> tableDTOPageResult = viewService.views(request.getDatabaseName(), request.getSchemaName());
List<TableVO> tableVOS = rdbWebConverter.tableDto2vo(tableDTOPageResult.getData());
return WebPageResult.of(tableVOS, Long.valueOf(tableVOS.size()), 1, tableVOS.size());
}
@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);
}
@GetMapping("/detail")
public DataResult<TableVO> detail(@Valid TableDetailQueryRequest request) {
DataResult<Table> dataResult = viewService.detail(request.getDatabaseName(),request.getSchemaName(),request.getTableName());
TableVO tableVO = rdbWebConverter.tableDto2vo(dataResult.getData());
return DataResult.of(tableVO);
}
@PostMapping("/delete")
public ActionResult delete(@Valid TableDeleteRequest request) {
DropParam dropParam = rdbWebConverter.tableDelete2dropParam(request);
return tableService.drop(dropParam);
}
}

View File

@ -36,4 +36,9 @@ public class TableVO {
* 是否已经被固定
*/
private boolean pinned;
/**
* ddl
*/
private String ddl;
}

View File

@ -0,0 +1,9 @@
//package ai.chat2db.server.web.api.controller.rdb.vo;
//
//public class ViewVO extends TableVO{
//
// /**
// * 视图脚本
// */
// private String script;
//}