This commit is contained in:
SwallowGG
2023-09-22 14:15:16 +08:00
parent de447e0de3
commit d7e811f4b4
17 changed files with 275 additions and 45 deletions

View File

@ -75,8 +75,8 @@ public class RdbDocController {
TableQueryParam param = rdbWebConverter.tableRequest2param(request);
for (TableVO tableVO: tableVOS) {
param.setTableName(tableVO.getName());
tableVO.setColumnList(rdbWebConverter.columnDto2vo(tableService.queryColumns(param)));
tableVO.setIndexList(rdbWebConverter.indexDto2vo(tableService.queryIndexes(param)));
tableVO.setColumnList(tableService.queryColumns(param));
tableVO.setIndexList(tableService.queryIndexes(param));
}
Class<?> targetClass = ExportServiceFactory.get(exportType.getCode());
Constructor<?> constructor = targetClass.getDeclaredConstructor();

View File

@ -1,7 +1,5 @@
package ai.chat2db.server.web.api.controller.rdb;
import java.util.List;
import ai.chat2db.server.domain.api.param.*;
import ai.chat2db.server.domain.api.service.DatabaseService;
import ai.chat2db.server.domain.api.service.DlTemplateService;
@ -18,18 +16,13 @@ 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 ai.chat2db.spi.model.Type;
import ai.chat2db.spi.model.*;
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;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@ConnectionInfoAspect
@RequestMapping("/api/rdb/table")
@ -66,7 +59,7 @@ public class TableController {
return WebPageResult.of(tableVOS, tableDTOPageResult.getTotal(), request.getPageNo(),
request.getPageSize());
}
/**
* 查询当前DB下的表columns
@ -167,7 +160,7 @@ public class TableController {
* @return
*/
@PostMapping("/modify/sql")
public ListResult<SqlVO> modifySql(@Valid @RequestBody TableModifySqlRequest request) {
public ListResult<SqlVO> modifySql(@Valid @RequestBody TableModifySqlRequest request) {
return tableService.buildSql(
rdbWebConverter.tableRequest2param(request.getOldTable()),
rdbWebConverter.tableRequest2param(request.getNewTable()))
@ -188,6 +181,14 @@ public class TableController {
return ListResult.of(types);
}
@GetMapping("/table_meta")
public DataResult<TableMeta> tableMeta(@Valid TypeQueryRequest request) {
TypeQueryParam typeQueryParam = TypeQueryParam.builder().dataSourceId(request.getDataSourceId()).build();
TableMeta tableMeta = tableService.queryTableMeta(typeQueryParam);
return DataResult.of(tableMeta);
}
/**
* 删除表
*

View File

@ -8,6 +8,9 @@ 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.TableVO;
import ai.chat2db.server.web.api.util.StringUtils;
import ai.chat2db.spi.model.TableColumn;
import ai.chat2db.spi.model.TableIndex;
import ai.chat2db.spi.model.TableIndexColumn;
import lombok.Getter;
import lombok.Setter;
import lombok.SneakyThrows;
@ -82,13 +85,13 @@ public class DatabaseExportService {
val t = new TableParameter();
t.setFieldName(item.getName() + "[" + StringUtils.isNull(item.getComment()) + "]");
List<TableParameter> colForTable = new LinkedList<>();
for (ColumnVO info : item.getColumnList()) {
for (TableColumn info : item.getColumnList()) {
val p = new TableParameter();
p.setFieldName(info.getName()).setColumnDefault(info.getDefaultValue())
.setColumnComment(info.getComment())
.setColumnType(info.getColumnType())
.setLength(String.valueOf(info.getCharacterMaximumLength())).setIsNullAble(String.valueOf(info.getNullable()))
.setDecimalPlaces(String.valueOf(info.getNumericPrecision()));
.setLength(String.valueOf(info.getColumnSize())).setIsNullAble(String.valueOf(info.getNullable()))
.setDecimalPlaces(String.valueOf(info.getDecimalDigits()));
colForTable.add(p);
}
String key = databaseName + JOINER + t.getFieldName();
@ -108,11 +111,12 @@ public class DatabaseExportService {
}
}
private List<IndexInfo> vo2Info(List<IndexVO> indexList) {
private List<IndexInfo> vo2Info(List<TableIndex> indexList) {
return indexList.stream().map(v -> {
IndexInfo info = new IndexInfo();
info.setName(v.getName());
info.setColumnName(v.getColumns());
List<TableIndexColumn> columnList = v.getColumnList();
info.setColumnName(columnList.stream().map(TableIndexColumn::getColumnName).collect(Collectors.joining(",")));
info.setIndexType(v.getType());
info.setComment(v.getComment());
return info;