提交 00650ce9 authored 作者: rc452860's avatar rc452860 提交者: 87719349@qq.com

feat: 添加数据库数据集时显示表注释

上级 d5164d59
......@@ -15,6 +15,8 @@ public class DBTableDTO {
private String datasourceId;
@ApiModelProperty("数据源名称")
private String name;
@ApiModelProperty("表注释")
private String remark;
@ApiModelProperty("启用检测")
private boolean enableCheck;
@ApiModelProperty("数据集路径")
......
package io.dataease.dto.datasource;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.Getter;
import lombok.Setter;
@Getter
@Setter
public class TableDesc {
@ApiModelProperty("表名称")
private String name;
@ApiModelProperty("表备注")
private String remark;
}
package io.dataease.provider.datasource;
import io.dataease.dto.datasource.TableDesc;
import io.dataease.dto.datasource.TableFiled;
import io.dataease.controller.request.datasource.DatasourceRequest;
......@@ -12,7 +13,7 @@ public abstract class DatasourceProvider {
abstract public List<String[]> getData(DatasourceRequest datasourceRequest) throws Exception;
abstract public List<String> getTables(DatasourceRequest datasourceRequest) throws Exception;
abstract public List<TableDesc> getTables(DatasourceRequest datasourceRequest) throws Exception;
public void checkStatus(DatasourceRequest datasourceRequest) throws Exception {
getData(datasourceRequest);
......
......@@ -302,12 +302,12 @@ public class JdbcProvider extends DatasourceProvider {
}
@Override
public List<String> getTables(DatasourceRequest datasourceRequest) throws Exception {
List<String> tables = new ArrayList<>();
public List<TableDesc> getTables(DatasourceRequest datasourceRequest) throws Exception {
List<TableDesc> tables = new ArrayList<>();
String queryStr = getTablesSql(datasourceRequest);
try (Connection con = getConnectionFromPool(datasourceRequest); Statement statement = con.createStatement(); ResultSet resultSet = statement.executeQuery(queryStr)) {
while (resultSet.next()) {
tables.add(resultSet.getString(1));
tables.add(getTableDesc(datasourceRequest, resultSet));
}
} catch (Exception e) {
DataEaseException.throwException(e);
......@@ -317,7 +317,7 @@ public class JdbcProvider extends DatasourceProvider {
if (queryView != null) {
try (Connection con = getConnectionFromPool(datasourceRequest); Statement statement = con.createStatement(); ResultSet resultSet = statement.executeQuery(queryView)) {
while (resultSet.next()) {
tables.add(resultSet.getString(1));
tables.add(getTableDesc(datasourceRequest, resultSet));
}
} catch (Exception e) {
DataEaseException.throwException(e);
......@@ -327,6 +327,19 @@ public class JdbcProvider extends DatasourceProvider {
return tables;
}
private TableDesc getTableDesc(DatasourceRequest datasourceRequest, ResultSet resultSet) throws SQLException {
TableDesc tableDesc = new TableDesc();
DatasourceTypes datasourceType = DatasourceTypes.valueOf(datasourceRequest.getDatasource().getType());
if (datasourceType == DatasourceTypes.oracle) {
tableDesc.setRemark(resultSet.getString(3));
}
if (datasourceType == DatasourceTypes.mysql) {
tableDesc.setRemark(resultSet.getString(2));
}
tableDesc.setName(resultSet.getString(1));
return tableDesc;
}
@Override
public List<String> getSchema(DatasourceRequest datasourceRequest) throws Exception {
List<String> schemas = new ArrayList<>();
......@@ -583,6 +596,8 @@ public class JdbcProvider extends DatasourceProvider {
switch (datasourceType) {
case mysql:
case mariadb:
JdbcConfiguration jdbcConfiguration = new Gson().fromJson(datasourceRequest.getDatasource().getConfiguration(), JdbcConfiguration.class);
return String.format("SELECT TABLE_NAME,TABLE_COMMENT FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE = 'BASE TABLE' AND TABLE_SCHEMA = '%s' ;", jdbcConfiguration.getDataBase());
case de_doris:
case ds_doris:
case hive:
......@@ -600,7 +615,7 @@ public class JdbcProvider extends DatasourceProvider {
if (StringUtils.isEmpty(oracleConfiguration.getSchema())) {
throw new Exception(Translator.get("i18n_schema_is_empty"));
}
return "select table_name, owner from all_tables where owner='" + oracleConfiguration.getSchema() + "'";
return "select table_name, owner, comments from all_tab_comments where owner='" + oracleConfiguration.getSchema() + "' AND table_type = 'TABLE'";
case pg:
PgConfiguration pgConfiguration = new Gson().fromJson(datasourceRequest.getDatasource().getConfiguration(), PgConfiguration.class);
if (StringUtils.isEmpty(pgConfiguration.getSchema())) {
......@@ -649,7 +664,7 @@ public class JdbcProvider extends DatasourceProvider {
if (StringUtils.isEmpty(oracleConfiguration.getSchema())) {
throw new Exception(Translator.get("i18n_schema_is_empty"));
}
return "select VIEW_NAME from all_views where owner='" + oracleConfiguration.getSchema() + "'";
return "select table_name, owner, comments from all_tab_comments where owner='" + oracleConfiguration.getSchema() + "' AND table_type = 'VIEW'";
case pg:
PgConfiguration pgConfiguration = new Gson().fromJson(datasourceRequest.getDatasource().getConfiguration(), PgConfiguration.class);
if (StringUtils.isEmpty(pgConfiguration.getSchema())) {
......
......@@ -193,22 +193,23 @@ public class DatasourceService {
DatasourceRequest datasourceRequest = new DatasourceRequest();
datasourceRequest.setDatasource(ds);
datasourceProvider.checkStatus(datasourceRequest);
List<String> tables = datasourceProvider.getTables(datasourceRequest);
List<TableDesc> tables = datasourceProvider.getTables(datasourceRequest);
// 获取当前数据源下的db类型数据集
DatasetTableExample datasetTableExample = new DatasetTableExample();
datasetTableExample.createCriteria().andTypeEqualTo("db").andDataSourceIdEqualTo(datasource.getId());
List<DatasetTable> datasetTables = datasetTableMapper.selectByExampleWithBLOBs(datasetTableExample);
List<DBTableDTO> list = new ArrayList<>();
for (String name : tables) {
for (TableDesc tableDesc : tables) {
DBTableDTO dbTableDTO = new DBTableDTO();
dbTableDTO.setDatasourceId(datasource.getId());
dbTableDTO.setName(name);
dbTableDTO.setName(tableDesc.getName());
dbTableDTO.setRemark(tableDesc.getRemark());
dbTableDTO.setEnableCheck(true);
dbTableDTO.setDatasetPath(null);
for (DatasetTable datasetTable : datasetTables) {
DataTableInfoDTO dataTableInfoDTO = new Gson().fromJson(datasetTable.getInfo(), DataTableInfoDTO.class);
if (StringUtils.equals(name, dataTableInfoDTO.getTable())) {
if (StringUtils.equals(tableDesc.getName(), dataTableInfoDTO.getTable())) {
dbTableDTO.setEnableCheck(false);
List<DatasetGroup> parents = dataSetGroupService.getParents(datasetTable.getSceneId());
StringBuilder stringBuilder = new StringBuilder();
......
......@@ -58,7 +58,7 @@
border
:label="t.name"
:disabled="!t.enableCheck"
/>
>{{ showTableNameWithComment(t) }}</el-checkbox>
</el-tooltip>
</el-checkbox-group>
</el-col>
......@@ -133,6 +133,13 @@ export default {
this.kettleRunning = res.data
})
},
showTableNameWithComment(t) {
if (t.remark) {
return `${t.name}(${t.remark})`
} else {
return `${t.name}`
}
},
save() {
let ds = {}
this.options.forEach(ele => {
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论