(improvement)(headless) database list not return password and update schema.sql (#744)

Co-authored-by: jolunoluo
This commit is contained in:
LXW
2024-02-23 18:41:19 +08:00
committed by GitHub
parent ba01cdb9bc
commit b555beae21
9 changed files with 41 additions and 20 deletions

View File

@@ -16,8 +16,6 @@ public class ViewReq extends SchemaItem {
private String alias;
private String filterSql;
private QueryConfig queryConfig;
private List<String> admins;

View File

@@ -35,8 +35,6 @@ public class ViewDO {
private String updatedBy;
private String filterSql;
private String queryConfig;
private String admin;

View File

@@ -8,7 +8,6 @@ import com.tencent.supersonic.headless.api.pojo.response.DatabaseResp;
import com.tencent.supersonic.headless.api.pojo.response.SemanticQueryResp;
import com.tencent.supersonic.headless.server.pojo.DatabaseParameter;
import com.tencent.supersonic.headless.server.service.DatabaseService;
import java.util.Map;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
@@ -20,6 +19,7 @@ import org.springframework.web.bind.annotation.RestController;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.List;
import java.util.Map;
@RestController
@RequestMapping("/api/semantic/database")
@@ -49,8 +49,10 @@ public class DatabaseController {
}
@GetMapping("/{id}")
public DatabaseResp getDatabase(@PathVariable("id") Long id) {
return databaseService.getDatabase(id);
public DatabaseResp getDatabase(@PathVariable("id") Long id, HttpServletRequest request,
HttpServletResponse response) {
User user = UserHolder.findUser(request, response);
return databaseService.getDatabase(id, user);
}
@GetMapping("/getDatabaseList")

View File

@@ -15,6 +15,10 @@ public interface DatabaseService {
SemanticQueryResp executeSql(String sql, Long id, User user);
DatabaseResp getDatabase(Long id, User user);
DatabaseResp getDatabase(Long id);
Map<String, List<DatabaseParameter>> getDatabaseParameters();
boolean testConnect(DatabaseReq databaseReq, User user);
@@ -25,8 +29,6 @@ public interface DatabaseService {
void deleteDatabase(Long databaseId);
DatabaseResp getDatabase(Long id);
SemanticQueryResp getDbNames(Long id);
SemanticQueryResp getTables(Long id, String db);

View File

@@ -1,6 +1,7 @@
package com.tencent.supersonic.headless.server.service.impl;
import com.tencent.supersonic.auth.api.authentication.pojo.User;
import com.tencent.supersonic.common.pojo.exception.InvalidPermissionException;
import com.tencent.supersonic.headless.api.pojo.request.DatabaseReq;
import com.tencent.supersonic.headless.api.pojo.response.DatabaseResp;
import com.tencent.supersonic.headless.api.pojo.response.ModelResp;
@@ -18,15 +19,16 @@ import com.tencent.supersonic.headless.server.pojo.ModelFilter;
import com.tencent.supersonic.headless.server.service.DatabaseService;
import com.tencent.supersonic.headless.server.service.ModelService;
import com.tencent.supersonic.headless.server.utils.DatabaseConverter;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
import lombok.extern.slf4j.Slf4j;
import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
@Slf4j
@Service
@@ -58,12 +60,12 @@ public class DatabaseServiceImpl implements DatabaseService {
database.updatedBy(user.getName());
DatabaseConverter.convert(database, databaseDO);
databaseRepository.updateDatabase(databaseDO);
return DatabaseConverter.convert(databaseDO);
return DatabaseConverter.convertWithPassword(databaseDO);
}
database.createdBy(user.getName());
databaseDO = DatabaseConverter.convert(database);
databaseRepository.createDatabase(databaseDO);
return DatabaseConverter.convert(databaseDO);
return DatabaseConverter.convertWithPassword(databaseDO);
}
@Override
@@ -108,7 +110,19 @@ public class DatabaseServiceImpl implements DatabaseService {
@Override
public DatabaseResp getDatabase(Long id) {
DatabaseDO databaseDO = databaseRepository.getDatabase(id);
return DatabaseConverter.convert(databaseDO);
return DatabaseConverter.convertWithPassword(databaseDO);
}
@Override
public DatabaseResp getDatabase(Long id, User user) {
DatabaseResp databaseResp = getDatabase(id);
if (!databaseResp.getAdmins().contains(user.getName())
&& !databaseResp.getViewers().contains(user.getName())
&& !databaseResp.getCreatedBy().equals(user.getName())) {
throw new InvalidPermissionException("您暂无查看该数据库详情的权限, 请联系创建人: "
+ databaseResp.getCreatedBy());
}
return databaseResp;
}
@Override

View File

@@ -63,7 +63,6 @@ public class DatabaseConverter {
BeanUtils.copyProperties(databaseDO, databaseResp);
ConnectInfo connectInfo = JSONObject.parseObject(databaseDO.getConfig(), ConnectInfo.class);
databaseResp.setUrl(connectInfo.getUrl());
databaseResp.setPassword(connectInfo.getPassword());
databaseResp.setUsername(connectInfo.getUserName());
databaseResp.setDatabase(connectInfo.getDatabase());
if (StringUtils.isNotBlank(databaseDO.getAdmin())) {
@@ -75,4 +74,11 @@ public class DatabaseConverter {
return databaseResp;
}
public static DatabaseResp convertWithPassword(DatabaseDO databaseDO) {
DatabaseResp databaseResp = convert(databaseDO);
ConnectInfo connectInfo = JSONObject.parseObject(databaseDO.getConfig(), ConnectInfo.class);
databaseResp.setPassword(connectInfo.getPassword());
return databaseResp;
}
}

View File

@@ -183,7 +183,10 @@ CREATE TABLE s2_view(
created_at datetime,
created_by VARCHAR(255),
updated_at datetime,
updated_by VARCHAR(255)
updated_by VARCHAR(255),
query_config VARCHAR(3000),
`admin` varchar(3000) DEFAULT NULL,
`admin_org` varchar(3000) DEFAULT NULL
)ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
alter table s2_plugin change column model `view` varchar(100);

View File

@@ -569,7 +569,6 @@ CREATE TABLE IF NOT EXISTS `s2_view` (
created_by VARCHAR(255),
updated_at TIMESTAMP,
updated_by VARCHAR(255),
filter_sql VARCHAR(1000),
query_config VARCHAR(3000),
`admin` varchar(3000) DEFAULT NULL,
`admin_org` varchar(3000) DEFAULT NULL

View File

@@ -494,7 +494,6 @@ CREATE TABLE s2_view
created_by VARCHAR(255),
updated_at datetime,
updated_by VARCHAR(255),
filter_sql VARCHAR(1000),
query_config VARCHAR(3000),
`admin` varchar(3000) DEFAULT NULL,
`admin_org` varchar(3000) DEFAULT NULL