support PinService

This commit is contained in:
jipengfei-jpf
2023-06-24 16:32:02 +08:00
parent 1e8a56b1f0
commit efd9aa490a
32 changed files with 595 additions and 95 deletions

View File

@ -0,0 +1,35 @@
package ai.chat2db.server.web.api.controller.pin;
import ai.chat2db.server.domain.api.service.PinService;
import ai.chat2db.server.tools.base.wrapper.result.ActionResult;
import ai.chat2db.server.web.api.controller.pin.converter.PinWebConverter;
import ai.chat2db.server.web.api.controller.pin.request.PinTableRequest;
import ai.chat2db.server.web.api.controller.rdb.request.DataExportRequest;
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;
@RequestMapping("/api/pin")
@RestController
public class PinController {
@Autowired
private PinService pinService;
@Autowired
private PinWebConverter pinWebConverter;
@PostMapping("/table/add")
public ActionResult add(PinTableRequest request) {
return pinService.pinTable(pinWebConverter.req2param(request));
}
@PostMapping("/table/delete")
public ActionResult delete(PinTableRequest request) {
return pinService.deletePinTable(pinWebConverter.req2param(request));
}
}

View File

@ -0,0 +1,12 @@
package ai.chat2db.server.web.api.controller.pin.converter;
import ai.chat2db.server.domain.api.param.PinTableParam;
import ai.chat2db.server.web.api.controller.pin.request.PinTableRequest;
import org.mapstruct.Mapper;
@Mapper(componentModel = "spring")
public abstract class PinWebConverter {
public abstract PinTableParam req2param(PinTableRequest request);
}

View File

@ -0,0 +1,35 @@
package ai.chat2db.server.web.api.controller.pin.request;
import ai.chat2db.server.web.api.controller.data.source.request.DataSourceBaseRequest;
import jakarta.validation.constraints.NotNull;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;
@Data
@SuperBuilder
@NoArgsConstructor
@AllArgsConstructor
public class PinTableRequest {
/**
* 数据源id
*/
@NotNull
private Long dataSourceId;
/**
* DB名称
*/
private String databaseName;
/**
* 表所在空间
*/
private String schemaName;
/**
* Pin table name
*/
private String tableName;
}

View File

@ -2,21 +2,12 @@ package ai.chat2db.server.web.api.controller.rdb;
import java.util.List;
import ai.chat2db.server.domain.api.param.DatabaseOperationParam;
import ai.chat2db.server.domain.api.param.DropParam;
import ai.chat2db.server.domain.api.param.SchemaOperationParam;
import ai.chat2db.server.domain.api.param.SchemaQueryParam;
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.param.*;
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.spi.model.Schema;
import ai.chat2db.spi.model.Table;
import ai.chat2db.spi.model.TableColumn;
import ai.chat2db.spi.model.TableIndex;
import ai.chat2db.server.web.api.controller.rdb.vo.*;
import ai.chat2db.spi.model.*;
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;
@ -34,11 +25,6 @@ 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.request.UpdateDatabaseRequest;
import ai.chat2db.server.web.api.controller.rdb.request.UpdateSchemaRequest;
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.SchemaVO;
import ai.chat2db.server.web.api.controller.rdb.vo.SqlVO;
import ai.chat2db.server.web.api.controller.rdb.vo.TableVO;
import com.google.common.collect.Lists;
import jakarta.validation.Valid;
@ -89,7 +75,7 @@ public class RdbDdlController {
PageResult<Table> tableDTOPageResult = tableService.pageQuery(queryParam, tableSelector);
List<TableVO> tableVOS = rdbWebConverter.tableDto2vo(tableDTOPageResult.getData());
return WebPageResult.of(tableVOS, tableDTOPageResult.getTotal(), request.getPageNo(),
request.getPageSize());
request.getPageSize());
}
/**
@ -106,6 +92,20 @@ public class RdbDdlController {
return ListResult.of(tableVOS);
}
/**
* 查询数据库里包含的database_schema_list
*
* @param request
* @return
*/
@GetMapping("/database_schema_list")
public DataResult<MetaSchemaVO> databaseSchemaList(@Valid DataSourceBaseRequest request) {
MetaDataQueryParam queryParam = MetaDataQueryParam.builder().dataSourceId(request.getDataSourceId()).build();
DataResult<MetaSchema> result = databaseService.queryDatabaseSchema(queryParam);
MetaSchemaVO schemaDto2vo = rdbWebConverter.metaSchemaDto2vo(result.getData());
return DataResult.of(schemaDto2vo);
}
/**
* 删除数据库
*
@ -139,7 +139,7 @@ public class RdbDdlController {
@PostMapping("/modify_database")
public ActionResult modifyDatabase(@Valid @RequestBody UpdateDatabaseRequest request) {
DatabaseOperationParam param = DatabaseOperationParam.builder().databaseName(request.getDatabaseName())
.newDatabaseName(request.getNewDatabaseName()).build();
.newDatabaseName(request.getNewDatabaseName()).build();
return databaseService.modifyDatabase(param);
}
@ -152,7 +152,7 @@ public class RdbDdlController {
@PostMapping("/delete_schema")
public ActionResult deleteSchema(@Valid @RequestBody DataSourceBaseRequest request) {
SchemaOperationParam param = SchemaOperationParam.builder().databaseName(request.getDatabaseName())
.schemaName(request.getSchemaName()).build();
.schemaName(request.getSchemaName()).build();
return databaseService.deleteSchema(param);
}
@ -165,7 +165,7 @@ public class RdbDdlController {
@PostMapping("/create_schema")
public ActionResult createSchema(@Valid @RequestBody DataSourceBaseRequest request) {
SchemaOperationParam param = SchemaOperationParam.builder().databaseName(request.getDatabaseName())
.schemaName(request.getSchemaName()).build();
.schemaName(request.getSchemaName()).build();
return databaseService.createSchema(param);
}
@ -178,7 +178,7 @@ public class RdbDdlController {
@PostMapping("/modify_schema")
public ActionResult modifySchema(@Valid @RequestBody UpdateSchemaRequest request) {
SchemaOperationParam param = SchemaOperationParam.builder().databaseName(request.getDatabaseName())
.schemaName(request.getSchemaName()).newSchemaName(request.getNewSchemaName()).build();
.schemaName(request.getSchemaName()).newSchemaName(request.getNewSchemaName()).build();
return databaseService.modifySchema(param);
}
@ -283,9 +283,9 @@ public class RdbDdlController {
@GetMapping("/modify/sql")
public ListResult<SqlVO> modifySql(@Valid TableModifySqlRequest request) {
return tableService.buildSql(
rdbWebConverter.tableRequest2param(request.getOldTable()),
rdbWebConverter.tableRequest2param(request.getNewTable()))
.map(rdbWebConverter::dto2vo);
rdbWebConverter.tableRequest2param(request.getOldTable()),
rdbWebConverter.tableRequest2param(request.getNewTable()))
.map(rdbWebConverter::dto2vo);
}
/**

View File

@ -8,12 +8,9 @@ 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.spi.model.ExecuteResult;
import ai.chat2db.spi.model.Schema;
import ai.chat2db.spi.model.Sql;
import ai.chat2db.spi.model.Table;
import ai.chat2db.spi.model.TableColumn;
import ai.chat2db.spi.model.TableIndex;
import ai.chat2db.server.tools.base.wrapper.result.DataResult;
import ai.chat2db.server.web.api.controller.rdb.vo.*;
import ai.chat2db.spi.model.*;
import ai.chat2db.server.web.api.controller.rdb.request.DdlCountRequest;
import ai.chat2db.server.web.api.controller.rdb.request.DdlExportRequest;
import ai.chat2db.server.web.api.controller.rdb.request.DdlRequest;
@ -22,12 +19,6 @@ 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.request.TableRequest;
import ai.chat2db.server.web.api.controller.rdb.vo.ColumnVO;
import ai.chat2db.server.web.api.controller.rdb.vo.ExecuteResultVO;
import ai.chat2db.server.web.api.controller.rdb.vo.IndexVO;
import ai.chat2db.server.web.api.controller.rdb.vo.SchemaVO;
import ai.chat2db.server.web.api.controller.rdb.vo.SqlVO;
import ai.chat2db.server.web.api.controller.rdb.vo.TableVO;
import org.mapstruct.Mapper;
import org.mapstruct.Mapping;
@ -199,4 +190,6 @@ public abstract class RdbWebConverter {
* @return
*/
public abstract SchemaVO schemaDto2vo(Schema dto);
public abstract MetaSchemaVO metaSchemaDto2vo(MetaSchema data);
}

View File

@ -0,0 +1,19 @@
package ai.chat2db.server.web.api.controller.rdb.vo;
import ai.chat2db.spi.model.Database;
import ai.chat2db.spi.model.Schema;
import lombok.Data;
import java.util.List;
@Data
public class MetaSchemaVO {
/**
* database list
*/
private List<Database> databases;
/**
* schema list
*/
private List<Schema> schemas;
}