mirror of
https://github.com/tencentmusic/supersonic.git
synced 2025-12-20 06:34:55 +00:00
(improvement)(Headless) Dataset supports query mode settings, and the chat layer supports tag mode (#802)
This commit is contained in:
@@ -1,11 +1,11 @@
|
||||
package com.tencent.supersonic.headless.api.pojo.request;
|
||||
|
||||
import com.tencent.supersonic.common.pojo.enums.QueryType;
|
||||
import com.tencent.supersonic.headless.api.pojo.DataSetDetail;
|
||||
import com.tencent.supersonic.headless.api.pojo.QueryConfig;
|
||||
import com.tencent.supersonic.headless.api.pojo.SchemaItem;
|
||||
import com.tencent.supersonic.headless.api.pojo.DataSetDetail;
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.List;
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
public class DataSetReq extends SchemaItem {
|
||||
@@ -22,6 +22,8 @@ public class DataSetReq extends SchemaItem {
|
||||
|
||||
private List<String> adminOrgs;
|
||||
|
||||
private QueryType queryType;
|
||||
|
||||
public String getAdmin() {
|
||||
if (admins == null) {
|
||||
return null;
|
||||
|
||||
@@ -53,16 +53,7 @@ public class QueryStructReq extends SemanticQueryReq {
|
||||
private DateConf dateInfo;
|
||||
private Long limit = 2000L;
|
||||
private QueryType queryType = QueryType.ID;
|
||||
|
||||
|
||||
/**
|
||||
* Later deleted for compatibility only
|
||||
*/
|
||||
private String s2SQL;
|
||||
/**
|
||||
* Later deleted for compatibility only
|
||||
*/
|
||||
private String correctS2SQL;
|
||||
private boolean convertToSql = true;
|
||||
|
||||
public List<String> getGroups() {
|
||||
if (!CollectionUtils.isEmpty(this.groups)) {
|
||||
|
||||
@@ -1,17 +1,17 @@
|
||||
package com.tencent.supersonic.headless.api.pojo.response;
|
||||
|
||||
import com.google.common.collect.Lists;
|
||||
import com.tencent.supersonic.headless.api.pojo.QueryConfig;
|
||||
import com.tencent.supersonic.headless.api.pojo.SchemaItem;
|
||||
import com.tencent.supersonic.common.pojo.enums.QueryType;
|
||||
import com.tencent.supersonic.headless.api.pojo.DataSetDetail;
|
||||
import com.tencent.supersonic.headless.api.pojo.DataSetModelConfig;
|
||||
import lombok.Data;
|
||||
import org.springframework.util.CollectionUtils;
|
||||
|
||||
import com.tencent.supersonic.headless.api.pojo.QueryConfig;
|
||||
import com.tencent.supersonic.headless.api.pojo.SchemaItem;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
import lombok.Data;
|
||||
import org.springframework.util.CollectionUtils;
|
||||
|
||||
@Data
|
||||
public class DataSetResp extends SchemaItem {
|
||||
@@ -30,6 +30,8 @@ public class DataSetResp extends SchemaItem {
|
||||
|
||||
private QueryConfig queryConfig;
|
||||
|
||||
private QueryType queryType;
|
||||
|
||||
public List<Long> getAllMetrics() {
|
||||
return getDataSetModelConfigs().stream().map(DataSetModelConfig::getMetrics)
|
||||
.flatMap(Collection::stream).collect(Collectors.toList());
|
||||
|
||||
@@ -3,8 +3,8 @@ package com.tencent.supersonic.headless.server.persistence.dataobject;
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import lombok.Data;
|
||||
import java.util.Date;
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
@TableName("s2_data_set")
|
||||
@@ -41,4 +41,6 @@ public class DataSetDO {
|
||||
|
||||
private String adminOrg;
|
||||
|
||||
private String queryType;
|
||||
|
||||
}
|
||||
|
||||
@@ -8,10 +8,12 @@ import com.google.common.cache.CacheBuilder;
|
||||
import com.google.common.collect.Lists;
|
||||
import com.tencent.supersonic.auth.api.authentication.pojo.User;
|
||||
import com.tencent.supersonic.common.pojo.enums.AuthType;
|
||||
import com.tencent.supersonic.common.pojo.enums.QueryType;
|
||||
import com.tencent.supersonic.common.pojo.enums.StatusEnum;
|
||||
import com.tencent.supersonic.common.pojo.enums.TypeEnums;
|
||||
import com.tencent.supersonic.common.pojo.exception.InvalidArgumentException;
|
||||
import com.tencent.supersonic.common.util.BeanMapper;
|
||||
import com.tencent.supersonic.headless.api.pojo.DataSetModelConfig;
|
||||
import com.tencent.supersonic.headless.api.pojo.QueryConfig;
|
||||
import com.tencent.supersonic.headless.api.pojo.DataSetDetail;
|
||||
import com.tencent.supersonic.headless.api.pojo.request.QuerySqlReq;
|
||||
@@ -30,6 +32,7 @@ import com.tencent.supersonic.headless.server.service.DimensionService;
|
||||
import com.tencent.supersonic.headless.server.service.DomainService;
|
||||
import com.tencent.supersonic.headless.server.service.MetricService;
|
||||
import com.tencent.supersonic.headless.server.service.DataSetService;
|
||||
import java.util.Objects;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.apache.commons.lang3.tuple.Pair;
|
||||
import org.springframework.beans.BeanUtils;
|
||||
@@ -168,6 +171,7 @@ public class DataSetServiceImpl
|
||||
dataSetResp.setAdminOrgs(StringUtils.isBlank(dataSetDO.getAdminOrg())
|
||||
? Lists.newArrayList() : Arrays.asList(dataSetDO.getAdminOrg().split(",")));
|
||||
dataSetResp.setTypeEnum(TypeEnums.DATASET);
|
||||
dataSetResp.setQueryType(QueryType.valueOf(dataSetDO.getQueryType()));
|
||||
return dataSetResp;
|
||||
}
|
||||
|
||||
@@ -176,6 +180,8 @@ public class DataSetServiceImpl
|
||||
BeanMapper.mapper(dataSetReq, dataSetDO);
|
||||
dataSetDO.setDataSetDetail(JSONObject.toJSONString(dataSetReq.getDataSetDetail()));
|
||||
dataSetDO.setQueryConfig(JSONObject.toJSONString(dataSetReq.getQueryConfig()));
|
||||
QueryType queryType = getQueryType(dataSetReq);
|
||||
dataSetDO.setQueryType(queryType.name());
|
||||
return dataSetDO;
|
||||
}
|
||||
|
||||
@@ -188,6 +194,24 @@ public class DataSetServiceImpl
|
||||
return queryReq;
|
||||
}
|
||||
|
||||
private QueryType getQueryType(DataSetReq dataSetReq) {
|
||||
QueryType queryType = dataSetReq.getQueryType();
|
||||
if (Objects.nonNull(queryType)) {
|
||||
return queryType;
|
||||
}
|
||||
List<DataSetModelConfig> dataSetModelConfigs = dataSetReq.getDataSetDetail().getDataSetModelConfigs();
|
||||
if (CollectionUtils.isEmpty(dataSetModelConfigs)) {
|
||||
return QueryType.METRIC;
|
||||
}
|
||||
|
||||
Set<DataSetModelConfig> collect = dataSetModelConfigs.stream()
|
||||
.filter(config -> !CollectionUtils.isEmpty(config.getTagIds())).collect(Collectors.toSet());
|
||||
if (CollectionUtils.isEmpty(collect)) {
|
||||
return QueryType.METRIC;
|
||||
}
|
||||
return QueryType.TAG;
|
||||
}
|
||||
|
||||
public static boolean checkAdminPermission(User user, DataSetResp dataSetResp) {
|
||||
List<String> admins = dataSetResp.getAdmins();
|
||||
if (user.isSuperAdmin()) {
|
||||
|
||||
Reference in New Issue
Block a user