mirror of
https://github.com/tencentmusic/supersonic.git
synced 2025-12-10 19:51:00 +00:00
(improvement)(headless) Modify the headless module structure to api, core and server (#588)
Co-authored-by: jolunoluo
This commit is contained in:
@@ -23,7 +23,7 @@
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.tencent.supersonic</groupId>
|
||||
<artifactId>headless-common</artifactId>
|
||||
<artifactId>headless-api</artifactId>
|
||||
<version>${project.version}</version>
|
||||
<scope>compile</scope>
|
||||
</dependency>
|
||||
|
||||
@@ -4,20 +4,20 @@ import com.github.pagehelper.PageInfo;
|
||||
import com.tencent.supersonic.auth.api.authentication.pojo.User;
|
||||
import com.tencent.supersonic.chat.api.pojo.ModelSchema;
|
||||
import com.tencent.supersonic.common.pojo.enums.AuthType;
|
||||
import com.tencent.supersonic.headless.common.model.request.PageDimensionReq;
|
||||
import com.tencent.supersonic.headless.common.model.request.PageMetricReq;
|
||||
import com.tencent.supersonic.headless.common.model.response.DomainResp;
|
||||
import com.tencent.supersonic.headless.common.model.response.DimensionResp;
|
||||
import com.tencent.supersonic.headless.common.model.response.ExplainResp;
|
||||
import com.tencent.supersonic.headless.common.model.response.MetricResp;
|
||||
import com.tencent.supersonic.headless.common.model.response.ModelResp;
|
||||
import com.tencent.supersonic.headless.common.model.response.ModelSchemaResp;
|
||||
import com.tencent.supersonic.headless.common.model.response.QueryResultWithSchemaResp;
|
||||
import com.tencent.supersonic.headless.common.query.request.ExplainSqlReq;
|
||||
import com.tencent.supersonic.headless.common.query.request.QueryDimValueReq;
|
||||
import com.tencent.supersonic.headless.common.query.request.QueryS2SQLReq;
|
||||
import com.tencent.supersonic.headless.common.query.request.QueryMultiStructReq;
|
||||
import com.tencent.supersonic.headless.common.query.request.QueryStructReq;
|
||||
import com.tencent.supersonic.headless.common.server.request.PageDimensionReq;
|
||||
import com.tencent.supersonic.headless.common.server.request.PageMetricReq;
|
||||
import com.tencent.supersonic.headless.common.server.response.DomainResp;
|
||||
import com.tencent.supersonic.headless.common.server.response.DimensionResp;
|
||||
import com.tencent.supersonic.headless.common.server.response.ExplainResp;
|
||||
import com.tencent.supersonic.headless.common.server.response.MetricResp;
|
||||
import com.tencent.supersonic.headless.common.server.response.ModelResp;
|
||||
import com.tencent.supersonic.headless.common.server.response.ModelSchemaResp;
|
||||
import com.tencent.supersonic.headless.common.server.response.QueryResultWithSchemaResp;
|
||||
import com.tencent.supersonic.headless.common.core.request.ExplainSqlReq;
|
||||
import com.tencent.supersonic.headless.common.core.request.QueryDimValueReq;
|
||||
import com.tencent.supersonic.headless.common.core.request.QueryS2SQLReq;
|
||||
import com.tencent.supersonic.headless.common.core.request.QueryMultiStructReq;
|
||||
import com.tencent.supersonic.headless.common.core.request.QueryStructReq;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
|
||||
@@ -77,12 +77,12 @@
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.tencent.supersonic</groupId>
|
||||
<artifactId>headless-common</artifactId>
|
||||
<artifactId>headless-api</artifactId>
|
||||
<version>${project.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.tencent.supersonic</groupId>
|
||||
<artifactId>headless-query</artifactId>
|
||||
<artifactId>headless-core</artifactId>
|
||||
<version>${project.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
package com.tencent.supersonic.chat.config;
|
||||
|
||||
|
||||
import com.tencent.supersonic.headless.common.model.response.DimSchemaResp;
|
||||
import com.tencent.supersonic.headless.common.model.response.MetricSchemaResp;
|
||||
import com.tencent.supersonic.headless.common.server.response.DimSchemaResp;
|
||||
import com.tencent.supersonic.headless.common.server.response.MetricSchemaResp;
|
||||
import java.util.List;
|
||||
import lombok.Data;
|
||||
|
||||
|
||||
@@ -9,20 +9,20 @@ import com.tencent.supersonic.common.util.embedding.Retrieval;
|
||||
import com.tencent.supersonic.common.util.embedding.RetrieveQuery;
|
||||
import com.tencent.supersonic.common.util.embedding.RetrieveQueryResult;
|
||||
import com.tencent.supersonic.common.util.embedding.S2EmbeddingStore;
|
||||
import com.tencent.supersonic.headless.server.listener.MetaEmbeddingListener;
|
||||
import com.tencent.supersonic.knowledge.dictionary.EmbeddingResult;
|
||||
import com.tencent.supersonic.headless.model.domain.listener.MetaEmbeddingListener;
|
||||
import java.util.Comparator;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
import java.util.stream.Collectors;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.collections.CollectionUtils;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.beans.BeanUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import java.util.Comparator;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* EmbeddingMatchStrategy uses vector database to perform
|
||||
|
||||
@@ -23,8 +23,8 @@ import com.tencent.supersonic.common.pojo.enums.DataFormatTypeEnum;
|
||||
import com.tencent.supersonic.common.pojo.enums.TimeDimensionEnum;
|
||||
import com.tencent.supersonic.common.util.DateUtils;
|
||||
import com.tencent.supersonic.knowledge.service.SchemaService;
|
||||
import com.tencent.supersonic.headless.common.model.pojo.SchemaItem;
|
||||
import com.tencent.supersonic.headless.common.model.response.ModelSchemaResp;
|
||||
import com.tencent.supersonic.headless.common.server.pojo.SchemaItem;
|
||||
import com.tencent.supersonic.headless.common.server.response.ModelSchemaResp;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Comparator;
|
||||
import java.util.HashSet;
|
||||
|
||||
@@ -12,7 +12,7 @@ import com.tencent.supersonic.common.util.embedding.Retrieval;
|
||||
import com.tencent.supersonic.common.util.embedding.RetrieveQuery;
|
||||
import com.tencent.supersonic.common.util.embedding.RetrieveQueryResult;
|
||||
import com.tencent.supersonic.common.util.embedding.S2EmbeddingStore;
|
||||
import com.tencent.supersonic.headless.model.domain.listener.MetaEmbeddingListener;
|
||||
import com.tencent.supersonic.headless.server.listener.MetaEmbeddingListener;
|
||||
import org.springframework.util.CollectionUtils;
|
||||
|
||||
import java.util.Collections;
|
||||
|
||||
@@ -15,11 +15,11 @@ import com.tencent.supersonic.common.pojo.Order;
|
||||
import com.tencent.supersonic.common.pojo.enums.TimeDimensionEnum;
|
||||
import com.tencent.supersonic.common.util.ContextUtils;
|
||||
import com.tencent.supersonic.knowledge.service.SchemaService;
|
||||
import com.tencent.supersonic.headless.common.model.enums.QueryTypeEnum;
|
||||
import com.tencent.supersonic.headless.common.model.response.ExplainResp;
|
||||
import com.tencent.supersonic.headless.common.query.request.ExplainSqlReq;
|
||||
import com.tencent.supersonic.headless.common.query.request.QueryS2SQLReq;
|
||||
import com.tencent.supersonic.headless.common.query.request.QueryStructReq;
|
||||
import com.tencent.supersonic.headless.common.server.enums.QueryType;
|
||||
import com.tencent.supersonic.headless.common.server.response.ExplainResp;
|
||||
import com.tencent.supersonic.headless.common.core.request.ExplainSqlReq;
|
||||
import com.tencent.supersonic.headless.common.core.request.QueryS2SQLReq;
|
||||
import com.tencent.supersonic.headless.common.core.request.QueryStructReq;
|
||||
import lombok.ToString;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.collections4.CollectionUtils;
|
||||
@@ -48,7 +48,7 @@ public abstract class BaseSemanticQuery implements SemanticQuery, Serializable {
|
||||
if (StringUtils.isNotBlank(sqlInfo.getCorrectS2SQL())) {
|
||||
//sql
|
||||
explainSqlReq = ExplainSqlReq.builder()
|
||||
.queryTypeEnum(QueryTypeEnum.SQL)
|
||||
.queryTypeEnum(QueryType.SQL)
|
||||
.queryReq(QueryReqBuilder.buildS2SQLReq(
|
||||
sqlInfo.getCorrectS2SQL(), parseInfo.getModel().getModelIds()
|
||||
))
|
||||
@@ -56,7 +56,7 @@ public abstract class BaseSemanticQuery implements SemanticQuery, Serializable {
|
||||
} else {
|
||||
//struct
|
||||
explainSqlReq = ExplainSqlReq.builder()
|
||||
.queryTypeEnum(QueryTypeEnum.STRUCT)
|
||||
.queryTypeEnum(QueryType.STRUCT)
|
||||
.queryReq(QueryReqBuilder.buildStructReq(parseInfo))
|
||||
.build();
|
||||
}
|
||||
|
||||
@@ -18,8 +18,8 @@ import com.tencent.supersonic.common.pojo.QueryColumn;
|
||||
import com.tencent.supersonic.common.pojo.enums.QueryType;
|
||||
import com.tencent.supersonic.common.pojo.enums.AggOperatorEnum;
|
||||
import com.tencent.supersonic.common.util.ContextUtils;
|
||||
import com.tencent.supersonic.headless.common.model.response.QueryResultWithSchemaResp;
|
||||
import com.tencent.supersonic.headless.common.query.request.QueryStructReq;
|
||||
import com.tencent.supersonic.headless.common.server.response.QueryResultWithSchemaResp;
|
||||
import com.tencent.supersonic.headless.common.core.request.QueryStructReq;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
@@ -10,8 +10,8 @@ import com.tencent.supersonic.chat.query.llm.LLMSemanticQuery;
|
||||
import com.tencent.supersonic.chat.utils.ComponentFactory;
|
||||
import com.tencent.supersonic.chat.utils.QueryReqBuilder;
|
||||
import com.tencent.supersonic.common.pojo.QueryColumn;
|
||||
import com.tencent.supersonic.headless.common.model.response.QueryResultWithSchemaResp;
|
||||
import com.tencent.supersonic.headless.common.query.request.QueryS2SQLReq;
|
||||
import com.tencent.supersonic.headless.common.server.response.QueryResultWithSchemaResp;
|
||||
import com.tencent.supersonic.headless.common.core.request.QueryS2SQLReq;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
|
||||
@@ -23,9 +23,9 @@ import com.tencent.supersonic.common.pojo.ModelCluster;
|
||||
import com.tencent.supersonic.common.pojo.QueryColumn;
|
||||
import com.tencent.supersonic.common.pojo.enums.FilterOperatorEnum;
|
||||
import com.tencent.supersonic.common.util.ContextUtils;
|
||||
import com.tencent.supersonic.headless.common.model.response.QueryResultWithSchemaResp;
|
||||
import com.tencent.supersonic.headless.common.query.request.QueryMultiStructReq;
|
||||
import com.tencent.supersonic.headless.common.query.request.QueryStructReq;
|
||||
import com.tencent.supersonic.headless.common.server.response.QueryResultWithSchemaResp;
|
||||
import com.tencent.supersonic.headless.common.core.request.QueryMultiStructReq;
|
||||
import com.tencent.supersonic.headless.common.core.request.QueryStructReq;
|
||||
import lombok.ToString;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
|
||||
@@ -9,8 +9,8 @@ import com.tencent.supersonic.chat.api.pojo.response.QueryResult;
|
||||
import com.tencent.supersonic.common.pojo.enums.FilterType;
|
||||
import com.tencent.supersonic.common.pojo.enums.FilterOperatorEnum;
|
||||
import com.tencent.supersonic.common.pojo.Filter;
|
||||
import com.tencent.supersonic.headless.common.query.request.QueryMultiStructReq;
|
||||
import com.tencent.supersonic.headless.common.query.request.QueryStructReq;
|
||||
import com.tencent.supersonic.headless.common.core.request.QueryMultiStructReq;
|
||||
import com.tencent.supersonic.headless.common.core.request.QueryStructReq;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
|
||||
@@ -18,7 +18,7 @@ import com.tencent.supersonic.chat.service.ConfigService;
|
||||
import com.tencent.supersonic.chat.service.SemanticService;
|
||||
import com.tencent.supersonic.common.pojo.DateConf;
|
||||
import com.tencent.supersonic.common.util.ContextUtils;
|
||||
import com.tencent.supersonic.headless.common.model.response.QueryResultWithSchemaResp;
|
||||
import com.tencent.supersonic.headless.common.server.response.QueryResultWithSchemaResp;
|
||||
import java.time.LocalDate;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
|
||||
@@ -10,8 +10,8 @@ import com.tencent.supersonic.chat.api.pojo.response.QueryResult;
|
||||
import com.tencent.supersonic.common.pojo.Filter;
|
||||
import com.tencent.supersonic.common.pojo.enums.FilterOperatorEnum;
|
||||
import com.tencent.supersonic.common.pojo.enums.FilterType;
|
||||
import com.tencent.supersonic.headless.common.query.request.QueryMultiStructReq;
|
||||
import com.tencent.supersonic.headless.common.query.request.QueryStructReq;
|
||||
import com.tencent.supersonic.headless.common.core.request.QueryMultiStructReq;
|
||||
import com.tencent.supersonic.headless.common.core.request.QueryStructReq;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
|
||||
@@ -12,12 +12,12 @@ import com.tencent.supersonic.chat.api.pojo.response.ChatConfigRichResp;
|
||||
import com.tencent.supersonic.chat.service.ConfigService;
|
||||
import com.tencent.supersonic.chat.utils.ComponentFactory;
|
||||
import com.tencent.supersonic.common.pojo.enums.AuthType;
|
||||
import com.tencent.supersonic.headless.common.model.request.PageDimensionReq;
|
||||
import com.tencent.supersonic.headless.common.model.request.PageMetricReq;
|
||||
import com.tencent.supersonic.headless.common.model.response.DimensionResp;
|
||||
import com.tencent.supersonic.headless.common.model.response.DomainResp;
|
||||
import com.tencent.supersonic.headless.common.model.response.MetricResp;
|
||||
import com.tencent.supersonic.headless.common.model.response.ModelResp;
|
||||
import com.tencent.supersonic.headless.common.server.request.PageDimensionReq;
|
||||
import com.tencent.supersonic.headless.common.server.request.PageMetricReq;
|
||||
import com.tencent.supersonic.headless.common.server.response.DimensionResp;
|
||||
import com.tencent.supersonic.headless.common.server.response.DomainResp;
|
||||
import com.tencent.supersonic.headless.common.server.response.MetricResp;
|
||||
import com.tencent.supersonic.headless.common.server.response.ModelResp;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.PathVariable;
|
||||
|
||||
@@ -41,8 +41,8 @@ import com.tencent.supersonic.common.pojo.enums.QueryType;
|
||||
import com.tencent.supersonic.common.pojo.enums.RatioOverType;
|
||||
import com.tencent.supersonic.common.util.ContextUtils;
|
||||
import com.tencent.supersonic.common.util.DateUtils;
|
||||
import com.tencent.supersonic.headless.common.model.response.QueryResultWithSchemaResp;
|
||||
import com.tencent.supersonic.headless.common.query.request.QueryStructReq;
|
||||
import com.tencent.supersonic.headless.common.server.response.QueryResultWithSchemaResp;
|
||||
import com.tencent.supersonic.headless.common.core.request.QueryStructReq;
|
||||
import com.tencent.supersonic.knowledge.service.SchemaService;
|
||||
import java.text.DecimalFormat;
|
||||
import java.time.DayOfWeek;
|
||||
|
||||
@@ -31,12 +31,12 @@ import com.tencent.supersonic.chat.utils.ChatConfigHelper;
|
||||
import com.tencent.supersonic.chat.utils.ComponentFactory;
|
||||
import com.tencent.supersonic.chat.utils.VisibilityEvent;
|
||||
import com.tencent.supersonic.common.util.JsonUtil;
|
||||
import com.tencent.supersonic.headless.common.model.pojo.SchemaItem;
|
||||
import com.tencent.supersonic.headless.common.model.response.DimensionResp;
|
||||
import com.tencent.supersonic.headless.common.model.response.MetricResp;
|
||||
import com.tencent.supersonic.headless.model.domain.DimensionService;
|
||||
import com.tencent.supersonic.headless.model.domain.MetricService;
|
||||
import com.tencent.supersonic.headless.model.domain.pojo.MetaFilter;
|
||||
import com.tencent.supersonic.headless.common.server.pojo.SchemaItem;
|
||||
import com.tencent.supersonic.headless.common.server.response.DimensionResp;
|
||||
import com.tencent.supersonic.headless.common.server.response.MetricResp;
|
||||
import com.tencent.supersonic.headless.server.pojo.MetaFilter;
|
||||
import com.tencent.supersonic.headless.server.service.DimensionService;
|
||||
import com.tencent.supersonic.headless.server.service.MetricService;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.BeanUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
|
||||
@@ -16,7 +16,7 @@ import com.tencent.supersonic.chat.service.PluginService;
|
||||
import com.tencent.supersonic.chat.utils.ComponentFactory;
|
||||
import com.tencent.supersonic.common.pojo.enums.AuthType;
|
||||
import com.tencent.supersonic.common.util.JsonUtil;
|
||||
import com.tencent.supersonic.headless.common.model.response.ModelResp;
|
||||
import com.tencent.supersonic.headless.common.server.response.ModelResp;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.beans.BeanUtils;
|
||||
|
||||
@@ -59,8 +59,8 @@ import com.tencent.supersonic.knowledge.dictionary.MultiCustomDictionary;
|
||||
import com.tencent.supersonic.knowledge.service.SearchService;
|
||||
import com.tencent.supersonic.knowledge.utils.HanlpHelper;
|
||||
import com.tencent.supersonic.knowledge.utils.NatureHelper;
|
||||
import com.tencent.supersonic.headless.common.model.response.QueryResultWithSchemaResp;
|
||||
import com.tencent.supersonic.headless.common.query.request.QueryStructReq;
|
||||
import com.tencent.supersonic.headless.common.server.response.QueryResultWithSchemaResp;
|
||||
import com.tencent.supersonic.headless.common.core.request.QueryStructReq;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import net.sf.jsqlparser.expression.Expression;
|
||||
import net.sf.jsqlparser.expression.LongValue;
|
||||
|
||||
@@ -14,8 +14,8 @@ import com.tencent.supersonic.chat.persistence.dataobject.DimValueDO;
|
||||
import com.tencent.supersonic.chat.service.ConfigService;
|
||||
import com.tencent.supersonic.knowledge.dictionary.DictUpdateMode;
|
||||
import com.tencent.supersonic.knowledge.dictionary.DimValue2DictCommand;
|
||||
import com.tencent.supersonic.headless.common.model.request.PageDimensionReq;
|
||||
import com.tencent.supersonic.headless.common.model.response.DimensionResp;
|
||||
import com.tencent.supersonic.headless.common.server.request.PageDimensionReq;
|
||||
import com.tencent.supersonic.headless.common.server.response.DimensionResp;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.beans.BeanUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
|
||||
@@ -18,8 +18,8 @@ import com.tencent.supersonic.common.pojo.Order;
|
||||
import com.tencent.supersonic.common.pojo.QueryColumn;
|
||||
import com.tencent.supersonic.common.pojo.enums.AggOperatorEnum;
|
||||
import com.tencent.supersonic.common.pojo.enums.FilterOperatorEnum;
|
||||
import com.tencent.supersonic.headless.common.model.response.QueryResultWithSchemaResp;
|
||||
import com.tencent.supersonic.headless.common.query.request.QueryStructReq;
|
||||
import com.tencent.supersonic.headless.common.server.response.QueryResultWithSchemaResp;
|
||||
import com.tencent.supersonic.headless.common.core.request.QueryStructReq;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.HashMap;
|
||||
|
||||
@@ -13,9 +13,9 @@ import com.tencent.supersonic.common.pojo.enums.QueryType;
|
||||
import com.tencent.supersonic.common.pojo.enums.AggOperatorEnum;
|
||||
import com.tencent.supersonic.common.pojo.enums.AggregateTypeEnum;
|
||||
import com.tencent.supersonic.common.pojo.enums.TimeDimensionEnum;
|
||||
import com.tencent.supersonic.headless.common.query.request.QueryMultiStructReq;
|
||||
import com.tencent.supersonic.headless.common.query.request.QueryS2SQLReq;
|
||||
import com.tencent.supersonic.headless.common.query.request.QueryStructReq;
|
||||
import com.tencent.supersonic.headless.common.core.request.QueryMultiStructReq;
|
||||
import com.tencent.supersonic.headless.common.core.request.QueryS2SQLReq;
|
||||
import com.tencent.supersonic.headless.common.core.request.QueryStructReq;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.apache.logging.log4j.util.Strings;
|
||||
|
||||
@@ -1,14 +1,14 @@
|
||||
package com.tencent.supersonic.chat.test.context;
|
||||
|
||||
import com.tencent.supersonic.chat.persistence.repository.impl.ChatContextRepositoryImpl;
|
||||
import com.tencent.supersonic.chat.utils.ComponentFactory;
|
||||
import com.tencent.supersonic.chat.persistence.mapper.ChatContextMapper;
|
||||
import com.tencent.supersonic.knowledge.semantic.RemoteSemanticInterpreter;
|
||||
import com.tencent.supersonic.chat.persistence.repository.impl.ChatContextRepositoryImpl;
|
||||
import com.tencent.supersonic.chat.test.ChatBizLauncher;
|
||||
import com.tencent.supersonic.headless.model.domain.DimensionService;
|
||||
import com.tencent.supersonic.headless.model.domain.MetricService;
|
||||
import com.tencent.supersonic.headless.model.domain.ModelService;
|
||||
import com.tencent.supersonic.headless.query.service.QueryService;
|
||||
import com.tencent.supersonic.chat.utils.ComponentFactory;
|
||||
import com.tencent.supersonic.headless.core.service.QueryService;
|
||||
import com.tencent.supersonic.headless.server.service.DimensionService;
|
||||
import com.tencent.supersonic.headless.server.service.MetricService;
|
||||
import com.tencent.supersonic.headless.server.service.ModelService;
|
||||
import com.tencent.supersonic.knowledge.semantic.RemoteSemanticInterpreter;
|
||||
import org.junit.runner.RunWith;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
@@ -1,9 +1,5 @@
|
||||
package com.tencent.supersonic.chat.test.context;
|
||||
|
||||
import static org.mockito.ArgumentMatchers.any;
|
||||
import static org.mockito.ArgumentMatchers.anyLong;
|
||||
import static org.mockito.Mockito.when;
|
||||
|
||||
import com.tencent.supersonic.chat.api.pojo.ChatContext;
|
||||
import com.tencent.supersonic.chat.api.pojo.response.ChatConfigResp;
|
||||
import com.tencent.supersonic.chat.config.DefaultMetric;
|
||||
@@ -15,24 +11,29 @@ import com.tencent.supersonic.chat.service.ChatService;
|
||||
import com.tencent.supersonic.chat.service.QueryService;
|
||||
import com.tencent.supersonic.chat.service.impl.ConfigServiceImpl;
|
||||
import com.tencent.supersonic.common.pojo.Constants;
|
||||
import com.tencent.supersonic.headless.common.model.response.DimSchemaResp;
|
||||
import com.tencent.supersonic.headless.common.model.response.DimensionResp;
|
||||
import com.tencent.supersonic.headless.common.model.response.MetricResp;
|
||||
import com.tencent.supersonic.headless.common.model.response.MetricSchemaResp;
|
||||
import com.tencent.supersonic.headless.common.model.response.ModelSchemaResp;
|
||||
import com.tencent.supersonic.headless.model.domain.DimensionService;
|
||||
import com.tencent.supersonic.headless.model.domain.MetricService;
|
||||
import com.tencent.supersonic.headless.model.domain.ModelService;
|
||||
import com.tencent.supersonic.headless.model.domain.pojo.DimensionFilter;
|
||||
import com.tencent.supersonic.headless.model.domain.pojo.MetaFilter;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import com.tencent.supersonic.headless.common.server.response.DimSchemaResp;
|
||||
import com.tencent.supersonic.headless.common.server.response.DimensionResp;
|
||||
import com.tencent.supersonic.headless.common.server.response.MetricResp;
|
||||
import com.tencent.supersonic.headless.common.server.response.MetricSchemaResp;
|
||||
import com.tencent.supersonic.headless.common.server.response.ModelSchemaResp;
|
||||
import com.tencent.supersonic.headless.server.pojo.DimensionFilter;
|
||||
import com.tencent.supersonic.headless.server.pojo.MetaFilter;
|
||||
import com.tencent.supersonic.headless.server.service.DimensionService;
|
||||
import com.tencent.supersonic.headless.server.service.MetricService;
|
||||
import com.tencent.supersonic.headless.server.service.ModelService;
|
||||
import org.mockito.Mockito;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
import org.springframework.web.client.RestTemplate;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
||||
import static org.mockito.ArgumentMatchers.any;
|
||||
import static org.mockito.ArgumentMatchers.anyLong;
|
||||
import static org.mockito.Mockito.when;
|
||||
|
||||
@Configuration
|
||||
public class MockBeansConfiguration {
|
||||
|
||||
|
||||
@@ -10,8 +10,8 @@ import com.tencent.supersonic.common.pojo.enums.AggOperatorEnum;
|
||||
import com.tencent.supersonic.common.util.ContextUtils;
|
||||
import com.tencent.supersonic.common.util.DateModeUtils;
|
||||
import com.tencent.supersonic.common.util.SqlFilterUtils;
|
||||
import com.tencent.supersonic.headless.common.query.request.QueryS2SQLReq;
|
||||
import com.tencent.supersonic.headless.common.query.request.QueryStructReq;
|
||||
import com.tencent.supersonic.headless.common.core.request.QueryS2SQLReq;
|
||||
import com.tencent.supersonic.headless.common.core.request.QueryStructReq;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
||||
@@ -100,7 +100,7 @@
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.tencent.supersonic</groupId>
|
||||
<artifactId>headless-query</artifactId>
|
||||
<artifactId>headless-core</artifactId>
|
||||
<version>${project.version}</version>
|
||||
<scope>compile</scope>
|
||||
</dependency>
|
||||
|
||||
@@ -4,7 +4,7 @@ import com.google.common.cache.Cache;
|
||||
import com.google.common.cache.CacheBuilder;
|
||||
import com.tencent.supersonic.chat.api.component.SemanticInterpreter;
|
||||
import com.tencent.supersonic.chat.api.pojo.ModelSchema;
|
||||
import com.tencent.supersonic.headless.common.model.response.ModelSchemaResp;
|
||||
import com.tencent.supersonic.headless.common.server.response.ModelSchemaResp;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
|
||||
@@ -5,25 +5,25 @@ import com.tencent.supersonic.auth.api.authentication.pojo.User;
|
||||
import com.tencent.supersonic.common.pojo.enums.AuthType;
|
||||
import com.tencent.supersonic.common.util.ContextUtils;
|
||||
import com.tencent.supersonic.common.util.JsonUtil;
|
||||
import com.tencent.supersonic.headless.common.model.request.ModelSchemaFilterReq;
|
||||
import com.tencent.supersonic.headless.common.model.request.PageDimensionReq;
|
||||
import com.tencent.supersonic.headless.common.model.request.PageMetricReq;
|
||||
import com.tencent.supersonic.headless.common.model.response.DimensionResp;
|
||||
import com.tencent.supersonic.headless.common.model.response.DomainResp;
|
||||
import com.tencent.supersonic.headless.common.model.response.ExplainResp;
|
||||
import com.tencent.supersonic.headless.common.model.response.MetricResp;
|
||||
import com.tencent.supersonic.headless.common.model.response.ModelResp;
|
||||
import com.tencent.supersonic.headless.common.model.response.ModelSchemaResp;
|
||||
import com.tencent.supersonic.headless.common.model.response.QueryResultWithSchemaResp;
|
||||
import com.tencent.supersonic.headless.common.query.request.ExplainSqlReq;
|
||||
import com.tencent.supersonic.headless.common.query.request.QueryDimValueReq;
|
||||
import com.tencent.supersonic.headless.common.query.request.QueryMultiStructReq;
|
||||
import com.tencent.supersonic.headless.common.query.request.QueryS2SQLReq;
|
||||
import com.tencent.supersonic.headless.common.query.request.QueryStructReq;
|
||||
import com.tencent.supersonic.headless.model.domain.DimensionService;
|
||||
import com.tencent.supersonic.headless.model.domain.MetricService;
|
||||
import com.tencent.supersonic.headless.query.service.QueryService;
|
||||
import com.tencent.supersonic.headless.query.service.SchemaService;
|
||||
import com.tencent.supersonic.headless.common.server.request.ModelSchemaFilterReq;
|
||||
import com.tencent.supersonic.headless.common.server.request.PageDimensionReq;
|
||||
import com.tencent.supersonic.headless.common.server.request.PageMetricReq;
|
||||
import com.tencent.supersonic.headless.common.server.response.DimensionResp;
|
||||
import com.tencent.supersonic.headless.common.server.response.DomainResp;
|
||||
import com.tencent.supersonic.headless.common.server.response.ExplainResp;
|
||||
import com.tencent.supersonic.headless.common.server.response.MetricResp;
|
||||
import com.tencent.supersonic.headless.common.server.response.ModelResp;
|
||||
import com.tencent.supersonic.headless.common.server.response.ModelSchemaResp;
|
||||
import com.tencent.supersonic.headless.common.server.response.QueryResultWithSchemaResp;
|
||||
import com.tencent.supersonic.headless.common.core.request.ExplainSqlReq;
|
||||
import com.tencent.supersonic.headless.common.core.request.QueryDimValueReq;
|
||||
import com.tencent.supersonic.headless.common.core.request.QueryMultiStructReq;
|
||||
import com.tencent.supersonic.headless.common.core.request.QueryS2SQLReq;
|
||||
import com.tencent.supersonic.headless.common.core.request.QueryStructReq;
|
||||
import com.tencent.supersonic.headless.core.service.QueryService;
|
||||
import com.tencent.supersonic.headless.core.service.SchemaService;
|
||||
import com.tencent.supersonic.headless.server.service.DimensionService;
|
||||
import com.tencent.supersonic.headless.server.service.MetricService;
|
||||
import lombok.SneakyThrows;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
|
||||
@@ -6,12 +6,12 @@ import com.tencent.supersonic.chat.api.pojo.RelatedSchemaElement;
|
||||
import com.tencent.supersonic.chat.api.pojo.SchemaElement;
|
||||
import com.tencent.supersonic.chat.api.pojo.SchemaElementType;
|
||||
import com.tencent.supersonic.chat.api.pojo.SchemaValueMap;
|
||||
import com.tencent.supersonic.headless.common.model.pojo.DimValueMap;
|
||||
import com.tencent.supersonic.headless.common.model.pojo.RelateDimension;
|
||||
import com.tencent.supersonic.headless.common.model.pojo.SchemaItem;
|
||||
import com.tencent.supersonic.headless.common.model.response.DimSchemaResp;
|
||||
import com.tencent.supersonic.headless.common.model.response.MetricSchemaResp;
|
||||
import com.tencent.supersonic.headless.common.model.response.ModelSchemaResp;
|
||||
import com.tencent.supersonic.headless.common.server.pojo.DimValueMap;
|
||||
import com.tencent.supersonic.headless.common.server.pojo.RelateDimension;
|
||||
import com.tencent.supersonic.headless.common.server.pojo.SchemaItem;
|
||||
import com.tencent.supersonic.headless.common.server.response.DimSchemaResp;
|
||||
import com.tencent.supersonic.headless.common.server.response.MetricSchemaResp;
|
||||
import com.tencent.supersonic.headless.common.server.response.ModelSchemaResp;
|
||||
import org.apache.logging.log4j.util.Strings;
|
||||
import org.springframework.beans.BeanUtils;
|
||||
import org.springframework.util.CollectionUtils;
|
||||
|
||||
@@ -19,21 +19,21 @@ import com.tencent.supersonic.common.util.ContextUtils;
|
||||
import com.tencent.supersonic.common.util.JsonUtil;
|
||||
import com.tencent.supersonic.common.util.S2ThreadContext;
|
||||
import com.tencent.supersonic.common.util.ThreadContext;
|
||||
import com.tencent.supersonic.headless.common.model.request.ModelSchemaFilterReq;
|
||||
import com.tencent.supersonic.headless.common.model.request.PageDimensionReq;
|
||||
import com.tencent.supersonic.headless.common.model.request.PageMetricReq;
|
||||
import com.tencent.supersonic.headless.common.model.response.DimensionResp;
|
||||
import com.tencent.supersonic.headless.common.model.response.DomainResp;
|
||||
import com.tencent.supersonic.headless.common.model.response.ExplainResp;
|
||||
import com.tencent.supersonic.headless.common.model.response.MetricResp;
|
||||
import com.tencent.supersonic.headless.common.model.response.ModelResp;
|
||||
import com.tencent.supersonic.headless.common.model.response.ModelSchemaResp;
|
||||
import com.tencent.supersonic.headless.common.model.response.QueryResultWithSchemaResp;
|
||||
import com.tencent.supersonic.headless.common.query.request.ExplainSqlReq;
|
||||
import com.tencent.supersonic.headless.common.query.request.QueryDimValueReq;
|
||||
import com.tencent.supersonic.headless.common.query.request.QueryMultiStructReq;
|
||||
import com.tencent.supersonic.headless.common.query.request.QueryS2SQLReq;
|
||||
import com.tencent.supersonic.headless.common.query.request.QueryStructReq;
|
||||
import com.tencent.supersonic.headless.common.server.request.ModelSchemaFilterReq;
|
||||
import com.tencent.supersonic.headless.common.server.request.PageDimensionReq;
|
||||
import com.tencent.supersonic.headless.common.server.request.PageMetricReq;
|
||||
import com.tencent.supersonic.headless.common.server.response.DimensionResp;
|
||||
import com.tencent.supersonic.headless.common.server.response.DomainResp;
|
||||
import com.tencent.supersonic.headless.common.server.response.ExplainResp;
|
||||
import com.tencent.supersonic.headless.common.server.response.MetricResp;
|
||||
import com.tencent.supersonic.headless.common.server.response.ModelResp;
|
||||
import com.tencent.supersonic.headless.common.server.response.ModelSchemaResp;
|
||||
import com.tencent.supersonic.headless.common.server.response.QueryResultWithSchemaResp;
|
||||
import com.tencent.supersonic.headless.common.core.request.ExplainSqlReq;
|
||||
import com.tencent.supersonic.headless.common.core.request.QueryDimValueReq;
|
||||
import com.tencent.supersonic.headless.common.core.request.QueryMultiStructReq;
|
||||
import com.tencent.supersonic.headless.common.core.request.QueryS2SQLReq;
|
||||
import com.tencent.supersonic.headless.common.core.request.QueryStructReq;
|
||||
import java.net.URI;
|
||||
import java.net.URL;
|
||||
import java.util.HashMap;
|
||||
|
||||
@@ -1,28 +1,69 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project xmlns="http://maven.apache.org/POM/4.0.0"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||
<parent>
|
||||
<groupId>com.tencent.supersonic</groupId>
|
||||
<artifactId>headless</artifactId>
|
||||
<version>${revision}</version>
|
||||
</parent>
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
|
||||
<artifactId>headless-api</artifactId>
|
||||
|
||||
<properties>
|
||||
<maven.compiler.source>8</maven.compiler.source>
|
||||
<maven.compiler.target>8</maven.compiler.target>
|
||||
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||
</properties>
|
||||
|
||||
<dependencies>
|
||||
<!-- <dependency>-->
|
||||
<!-- <groupId>ru.yandex.clickhouse</groupId>-->
|
||||
<!-- <artifactId>clickhouse-jdbc</artifactId>-->
|
||||
<!-- <version>${clickhouse.jdbc.version}</version>-->
|
||||
<!-- </dependency>-->
|
||||
<dependency>
|
||||
<groupId>com.clickhouse</groupId>
|
||||
<artifactId>clickhouse-jdbc</artifactId>
|
||||
<version>${clickhouse.jdbc.version}</version>
|
||||
<!-- use uber jar with all dependencies included, change classifier to http for smaller jar -->
|
||||
<classifier>all</classifier>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>com.tencent.supersonic</groupId>
|
||||
<artifactId>headless-query</artifactId>
|
||||
<artifactId>common</artifactId>
|
||||
<version>${project.version}</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>org.projectlombok</groupId>
|
||||
<artifactId>lombok</artifactId>
|
||||
<version>${lombok.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>jakarta.validation</groupId>
|
||||
<artifactId>jakarta.validation-api</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.springframework</groupId>
|
||||
<artifactId>spring-core</artifactId>
|
||||
<version>${spring.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.alibaba</groupId>
|
||||
<artifactId>fastjson</artifactId>
|
||||
<version>${fastjson.version}</version>
|
||||
<scope>compile</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>commons-codec</groupId>
|
||||
<artifactId>commons-codec</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-web</artifactId>
|
||||
<version>${spring.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.tencent.supersonic</groupId>
|
||||
<artifactId>auth-api</artifactId>
|
||||
<version>${project.version}</version>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
</project>
|
||||
</project>
|
||||
|
||||
@@ -1,43 +0,0 @@
|
||||
package com.tencent.supersonic.headless.api.rest;
|
||||
|
||||
import com.tencent.supersonic.headless.api.service.ApiQueryService;
|
||||
import com.tencent.supersonic.headless.common.model.response.QueryResultWithSchemaResp;
|
||||
import com.tencent.supersonic.headless.common.query.request.MetaQueryApiReq;
|
||||
import com.tencent.supersonic.headless.common.query.request.QueryApiReq;
|
||||
import com.tencent.supersonic.headless.common.query.request.QueryStructReq;
|
||||
import com.tencent.supersonic.headless.common.query.response.ApiQueryResultResp;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
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 javax.servlet.http.HttpServletRequest;
|
||||
|
||||
@RestController
|
||||
@RequestMapping("/api/semantic/apiQuery")
|
||||
@Slf4j
|
||||
public class ApiQueryController {
|
||||
|
||||
@Autowired
|
||||
private ApiQueryService apiQueryService;
|
||||
|
||||
@PostMapping("/metricDataQueryById")
|
||||
public ApiQueryResultResp metricDataQueryById(@RequestBody QueryApiReq queryApiReq,
|
||||
HttpServletRequest request) throws Exception {
|
||||
return apiQueryService.metricDataQueryById(queryApiReq, request);
|
||||
}
|
||||
|
||||
@PostMapping("/metaQuery")
|
||||
public Object metaQuery(@RequestBody MetaQueryApiReq metaQueryApiReq, HttpServletRequest request) {
|
||||
return apiQueryService.metaQuery(metaQueryApiReq, request);
|
||||
}
|
||||
|
||||
@PostMapping("/dataQueryByStruct")
|
||||
public QueryResultWithSchemaResp dataQueryByStruct(QueryStructReq queryStructReq,
|
||||
HttpServletRequest request) throws Exception {
|
||||
return apiQueryService.dataQueryByStruct(queryStructReq, request);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,47 +0,0 @@
|
||||
package com.tencent.supersonic.headless.api.service;
|
||||
|
||||
import com.tencent.supersonic.headless.common.model.response.QueryResultWithSchemaResp;
|
||||
import com.tencent.supersonic.headless.common.query.request.MetaQueryApiReq;
|
||||
import com.tencent.supersonic.headless.common.query.request.QueryApiReq;
|
||||
import com.tencent.supersonic.headless.common.query.request.QueryStructReq;
|
||||
import com.tencent.supersonic.headless.common.query.response.ApiQueryResultResp;
|
||||
import com.tencent.supersonic.headless.api.annotation.ApiHeaderCheck;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
/**
|
||||
* Api service for other apps to query meta info and data
|
||||
*/
|
||||
public interface ApiQueryService {
|
||||
|
||||
/**
|
||||
* Query the metric data based on the metric id.
|
||||
* The data will be drilled down based on the information configured when applying for the APP.
|
||||
* @param queryApiReq
|
||||
* @param request
|
||||
* @return
|
||||
* @throws Exception
|
||||
*/
|
||||
@ApiHeaderCheck
|
||||
ApiQueryResultResp metricDataQueryById(QueryApiReq queryApiReq, HttpServletRequest request) throws Exception;
|
||||
|
||||
/**
|
||||
* Query data based on structure
|
||||
* @param queryStructReq
|
||||
* @param request
|
||||
* @return
|
||||
* @throws Exception
|
||||
*/
|
||||
@ApiHeaderCheck
|
||||
QueryResultWithSchemaResp dataQueryByStruct(QueryStructReq queryStructReq,
|
||||
HttpServletRequest request) throws Exception;
|
||||
|
||||
/**
|
||||
* Query the meta information of the metric, dimension and tag
|
||||
* @param metaQueryApiReq
|
||||
* @param request
|
||||
* @return
|
||||
*/
|
||||
@ApiHeaderCheck
|
||||
Object metaQuery(MetaQueryApiReq metaQueryApiReq, HttpServletRequest request);
|
||||
|
||||
}
|
||||
@@ -1,177 +0,0 @@
|
||||
package com.tencent.supersonic.headless.api.service.impl;
|
||||
|
||||
import com.google.common.collect.Lists;
|
||||
import com.tencent.supersonic.auth.api.authentication.pojo.User;
|
||||
import com.tencent.supersonic.common.pojo.Aggregator;
|
||||
import com.tencent.supersonic.common.pojo.Constants;
|
||||
import com.tencent.supersonic.common.pojo.DateConf;
|
||||
import com.tencent.supersonic.common.pojo.enums.ApiItemType;
|
||||
import com.tencent.supersonic.common.pojo.enums.TimeDimensionEnum;
|
||||
import com.tencent.supersonic.common.pojo.exception.InvalidArgumentException;
|
||||
import com.tencent.supersonic.headless.api.aspect.ApiHeaderCheckAspect;
|
||||
import com.tencent.supersonic.headless.api.service.ApiQueryService;
|
||||
import com.tencent.supersonic.headless.api.service.AppService;
|
||||
import com.tencent.supersonic.headless.common.model.pojo.Item;
|
||||
import com.tencent.supersonic.headless.common.model.response.AppDetailResp;
|
||||
import com.tencent.supersonic.headless.common.model.response.DimensionResp;
|
||||
import com.tencent.supersonic.headless.common.model.response.MetricResp;
|
||||
import com.tencent.supersonic.headless.common.model.response.QueryResultWithSchemaResp;
|
||||
import com.tencent.supersonic.headless.common.query.pojo.ApiQuerySingleResult;
|
||||
import com.tencent.supersonic.headless.common.query.request.MetaQueryApiReq;
|
||||
import com.tencent.supersonic.headless.common.query.request.QueryApiReq;
|
||||
import com.tencent.supersonic.headless.common.query.request.QueryStructReq;
|
||||
import com.tencent.supersonic.headless.common.query.response.ApiQueryResultResp;
|
||||
import com.tencent.supersonic.headless.model.domain.DimensionService;
|
||||
import com.tencent.supersonic.headless.model.domain.MetricService;
|
||||
import com.tencent.supersonic.headless.model.domain.pojo.DimensionFilter;
|
||||
import com.tencent.supersonic.headless.model.domain.pojo.MetaFilter;
|
||||
import com.tencent.supersonic.headless.api.annotation.ApiHeaderCheck;
|
||||
import com.tencent.supersonic.headless.query.service.QueryService;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.util.CollectionUtils;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
|
||||
@Service
|
||||
public class ApiQueryServiceImpl implements ApiQueryService {
|
||||
|
||||
private static final long result_size = 10000;
|
||||
|
||||
private AppService appService;
|
||||
|
||||
private MetricService metricService;
|
||||
|
||||
private DimensionService dimensionService;
|
||||
|
||||
private QueryService queryService;
|
||||
|
||||
public ApiQueryServiceImpl(AppService appService,
|
||||
MetricService metricService,
|
||||
DimensionService dimensionService,
|
||||
QueryService queryService) {
|
||||
this.appService = appService;
|
||||
this.metricService = metricService;
|
||||
this.dimensionService = dimensionService;
|
||||
this.queryService = queryService;
|
||||
}
|
||||
|
||||
@Override
|
||||
@ApiHeaderCheck
|
||||
public ApiQueryResultResp metricDataQueryById(QueryApiReq queryApiReq,
|
||||
HttpServletRequest request) throws Exception {
|
||||
AppDetailResp appDetailResp = getAppDetailResp(request);
|
||||
authCheck(appDetailResp, queryApiReq.getIds(), ApiItemType.METRIC);
|
||||
List<ApiQuerySingleResult> results = Lists.newArrayList();
|
||||
Map<Long, Item> map = appDetailResp.getConfig().getItems().stream()
|
||||
.collect(Collectors.toMap(Item::getId, i -> i));
|
||||
for (Long id : queryApiReq.getIds()) {
|
||||
Item item = map.get(id);
|
||||
ApiQuerySingleResult apiQuerySingleResult = dataQuery(appDetailResp.getId(),
|
||||
item, queryApiReq.getDateConf());
|
||||
results.add(apiQuerySingleResult);
|
||||
}
|
||||
return ApiQueryResultResp.builder().results(results).build();
|
||||
}
|
||||
|
||||
@Override
|
||||
@ApiHeaderCheck
|
||||
public QueryResultWithSchemaResp dataQueryByStruct(QueryStructReq queryStructReq,
|
||||
HttpServletRequest request) throws Exception {
|
||||
AppDetailResp appDetailResp = getAppDetailResp(request);
|
||||
structAuthCheck(appDetailResp, queryStructReq);
|
||||
return queryService.queryByStruct(queryStructReq, User.getAppUser(appDetailResp.getId()));
|
||||
}
|
||||
|
||||
@Override
|
||||
@ApiHeaderCheck
|
||||
public Object metaQuery(MetaQueryApiReq metaQueryApiReq, HttpServletRequest request) {
|
||||
AppDetailResp appDetailResp = getAppDetailResp(request);
|
||||
MetaFilter metaFilter = new MetaFilter();
|
||||
metaFilter.setIds(metaQueryApiReq.getIds());
|
||||
if (ApiItemType.METRIC.equals(metaQueryApiReq.getType())) {
|
||||
authCheck(appDetailResp, metaQueryApiReq.getIds(), ApiItemType.METRIC);
|
||||
return metricService.getMetrics(metaFilter);
|
||||
} else if (ApiItemType.DIMENSION.equals(metaQueryApiReq.getType())) {
|
||||
authCheck(appDetailResp, metaQueryApiReq.getIds(), ApiItemType.DIMENSION);
|
||||
return dimensionService.getDimensions(metaFilter);
|
||||
} else if (ApiItemType.TAG.equals(metaQueryApiReq.getType())) {
|
||||
throw new InvalidArgumentException("标签元数据类型正在支持中");
|
||||
}
|
||||
throw new InvalidArgumentException("不支持的元数据类型:" + metaQueryApiReq.getType());
|
||||
}
|
||||
|
||||
private ApiQuerySingleResult dataQuery(Integer appId, Item item, DateConf dateConf) throws Exception {
|
||||
MetricResp metricResp = metricService.getMetric(item.getId());
|
||||
List<Item> items = item.getRelateItems();
|
||||
List<DimensionResp> dimensionResps = Lists.newArrayList();
|
||||
if (!CollectionUtils.isEmpty(items)) {
|
||||
List<Long> ids = items.stream().map(Item::getId).collect(Collectors.toList());
|
||||
DimensionFilter dimensionFilter = new DimensionFilter();
|
||||
dimensionFilter.setIds(ids);
|
||||
dimensionResps = dimensionService.getDimensions(dimensionFilter);
|
||||
}
|
||||
QueryStructReq queryStructReq = buildQueryStructReq(dimensionResps, metricResp, dateConf);
|
||||
QueryResultWithSchemaResp queryResultWithSchemaResp =
|
||||
queryService.queryByStruct(queryStructReq, User.getAppUser(appId));
|
||||
ApiQuerySingleResult apiQuerySingleResult = new ApiQuerySingleResult();
|
||||
apiQuerySingleResult.setItem(item);
|
||||
apiQuerySingleResult.setResult(queryResultWithSchemaResp);
|
||||
return apiQuerySingleResult;
|
||||
}
|
||||
|
||||
private AppDetailResp getAppDetailResp(HttpServletRequest request) {
|
||||
int appId = Integer.parseInt(request.getHeader(ApiHeaderCheckAspect.APPID));
|
||||
return appService.getApp(appId);
|
||||
}
|
||||
|
||||
private void authCheck(AppDetailResp appDetailResp, List<Long> ids, ApiItemType type) {
|
||||
Set<Long> idsInApp = appDetailResp.getConfig().getAllItems().stream()
|
||||
.filter(item -> type.equals(item.getType())).map(Item::getId).collect(Collectors.toSet());
|
||||
if (!idsInApp.containsAll(ids)) {
|
||||
throw new InvalidArgumentException("查询范围超过应用申请范围, 请检查");
|
||||
}
|
||||
}
|
||||
|
||||
private void structAuthCheck(AppDetailResp appDetailResp, QueryStructReq queryStructReq) {
|
||||
List<Long> metricIdsToQuery = metricService.getMetrics(new MetaFilter(queryStructReq.getModelIds()))
|
||||
.stream().filter(metricResp -> queryStructReq.getMetrics().contains(metricResp.getBizName()))
|
||||
.map(MetricResp::getId).collect(Collectors.toList());
|
||||
List<Long> dimensionIdsToQuery = dimensionService.getDimensions(new MetaFilter(queryStructReq.getModelIds()))
|
||||
.stream().filter(dimensionResp -> queryStructReq.getGroups().contains(dimensionResp.getBizName()))
|
||||
.map(DimensionResp::getId).collect(Collectors.toList());
|
||||
authCheck(appDetailResp, metricIdsToQuery, ApiItemType.METRIC);
|
||||
authCheck(appDetailResp, dimensionIdsToQuery, ApiItemType.DIMENSION);
|
||||
}
|
||||
|
||||
private QueryStructReq buildQueryStructReq(List<DimensionResp> dimensionResps,
|
||||
MetricResp metricResp, DateConf dateConf) {
|
||||
Set<Long> modelIds = dimensionResps.stream().map(DimensionResp::getModelId).collect(Collectors.toSet());
|
||||
modelIds.add(metricResp.getModelId());
|
||||
QueryStructReq queryStructReq = new QueryStructReq();
|
||||
queryStructReq.setGroups(dimensionResps.stream()
|
||||
.map(DimensionResp::getBizName).collect(Collectors.toList()));
|
||||
queryStructReq.getGroups().add(0, getTimeDimension(dateConf));
|
||||
Aggregator aggregator = new Aggregator();
|
||||
aggregator.setColumn(metricResp.getBizName());
|
||||
queryStructReq.setAggregators(Lists.newArrayList(aggregator));
|
||||
queryStructReq.setDateInfo(dateConf);
|
||||
queryStructReq.setModelIds(modelIds);
|
||||
queryStructReq.setLimit(result_size);
|
||||
return queryStructReq;
|
||||
}
|
||||
|
||||
private String getTimeDimension(DateConf dateConf) {
|
||||
if (Constants.MONTH.equals(dateConf.getPeriod())) {
|
||||
return TimeDimensionEnum.MONTH.getName();
|
||||
} else if (Constants.WEEK.equals(dateConf.getPeriod())) {
|
||||
return TimeDimensionEnum.WEEK.getName();
|
||||
} else {
|
||||
return TimeDimensionEnum.DAY.getName();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.tencent.supersonic.headless.common.query.enums;
|
||||
package com.tencent.supersonic.headless.common.core.enums;
|
||||
|
||||
public enum AggOption {
|
||||
NATIVE,
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.tencent.supersonic.headless.common.model.enums;
|
||||
package com.tencent.supersonic.headless.common.core.enums;
|
||||
|
||||
public enum QueryOptMode {
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
package com.tencent.supersonic.headless.common.model.enums;
|
||||
package com.tencent.supersonic.headless.common.core.enums;
|
||||
|
||||
|
||||
public enum QueryTypeBackEnum {
|
||||
public enum QueryTypeBack {
|
||||
NORMAL("NORMAL", 0),
|
||||
|
||||
PRE_FLUSH("PRE_FLUSH", 1);
|
||||
@@ -9,13 +9,13 @@ public enum QueryTypeBackEnum {
|
||||
private String value;
|
||||
private Integer state;
|
||||
|
||||
QueryTypeBackEnum(String value, Integer state) {
|
||||
QueryTypeBack(String value, Integer state) {
|
||||
this.value = value;
|
||||
this.state = state;
|
||||
}
|
||||
|
||||
public static QueryTypeBackEnum of(String src) {
|
||||
for (QueryTypeBackEnum operatorEnum : QueryTypeBackEnum.values()) {
|
||||
public static QueryTypeBack of(String src) {
|
||||
for (QueryTypeBack operatorEnum : QueryTypeBack.values()) {
|
||||
if (src.toUpperCase().contains(operatorEnum.value)) {
|
||||
return operatorEnum;
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.tencent.supersonic.headless.common.query.pojo;
|
||||
package com.tencent.supersonic.headless.common.core.pojo;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
@@ -1,9 +1,10 @@
|
||||
package com.tencent.supersonic.headless.common.query.pojo;
|
||||
package com.tencent.supersonic.headless.common.core.pojo;
|
||||
|
||||
import com.tencent.supersonic.headless.common.query.enums.AggOption;
|
||||
import java.util.List;
|
||||
import com.tencent.supersonic.headless.common.core.enums.AggOption;
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@Data
|
||||
public class MetricTable {
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
package com.tencent.supersonic.headless.common.query.pojo;
|
||||
|
||||
import javax.validation.constraints.NotBlank;
|
||||
package com.tencent.supersonic.headless.common.core.pojo;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
import javax.validation.constraints.NotBlank;
|
||||
|
||||
@Data
|
||||
public class Param {
|
||||
|
||||
@@ -0,0 +1,15 @@
|
||||
package com.tencent.supersonic.headless.common.core.pojo;
|
||||
|
||||
|
||||
import com.tencent.supersonic.headless.common.server.pojo.Item;
|
||||
import com.tencent.supersonic.headless.common.server.response.QueryResultWithSchemaResp;
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
public class SingleItemQueryResult {
|
||||
|
||||
private Item item;
|
||||
|
||||
private QueryResultWithSchemaResp result;
|
||||
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.tencent.supersonic.headless.common.query.request;
|
||||
package com.tencent.supersonic.headless.common.core.request;
|
||||
|
||||
import com.tencent.supersonic.common.pojo.DateConf;
|
||||
import lombok.Data;
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.tencent.supersonic.headless.common.query.request;
|
||||
package com.tencent.supersonic.headless.common.core.request;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
package com.tencent.supersonic.headless.common.query.request;
|
||||
package com.tencent.supersonic.headless.common.core.request;
|
||||
|
||||
import com.tencent.supersonic.headless.common.model.enums.QueryTypeEnum;
|
||||
import com.tencent.supersonic.headless.common.server.enums.QueryType;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
@@ -14,7 +14,7 @@ import lombok.ToString;
|
||||
@NoArgsConstructor
|
||||
public class ExplainSqlReq<T> {
|
||||
|
||||
private QueryTypeEnum queryTypeEnum;
|
||||
private QueryType queryTypeEnum;
|
||||
|
||||
private T queryReq;
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.tencent.supersonic.headless.common.query.request;
|
||||
package com.tencent.supersonic.headless.common.core.request;
|
||||
|
||||
import java.util.List;
|
||||
import lombok.Data;
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.tencent.supersonic.headless.common.query.request;
|
||||
package com.tencent.supersonic.headless.common.core.request;
|
||||
|
||||
import com.tencent.supersonic.common.pojo.enums.ApiItemType;
|
||||
import lombok.Data;
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.tencent.supersonic.headless.common.query.request;
|
||||
package com.tencent.supersonic.headless.common.core.request;
|
||||
|
||||
import com.tencent.supersonic.common.pojo.ColumnOrder;
|
||||
import java.util.List;
|
||||
@@ -1,6 +1,6 @@
|
||||
package com.tencent.supersonic.headless.common.query.request;
|
||||
package com.tencent.supersonic.headless.common.core.request;
|
||||
|
||||
import com.tencent.supersonic.headless.common.query.pojo.MetricTable;
|
||||
import com.tencent.supersonic.headless.common.core.pojo.MetricTable;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.tencent.supersonic.headless.common.query.request;
|
||||
package com.tencent.supersonic.headless.common.core.request;
|
||||
|
||||
import com.tencent.supersonic.common.pojo.DateConf;
|
||||
import lombok.Data;
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.tencent.supersonic.headless.common.query.request;
|
||||
package com.tencent.supersonic.headless.common.core.request;
|
||||
|
||||
import com.tencent.supersonic.common.pojo.DateConf;
|
||||
import lombok.Data;
|
||||
@@ -7,11 +7,14 @@ import javax.validation.constraints.NotEmpty;
|
||||
import java.util.List;
|
||||
|
||||
@Data
|
||||
public class QueryApiReq {
|
||||
public class QueryItemReq {
|
||||
|
||||
@NotEmpty(message = "ids不可为空")
|
||||
private List<Long> ids;
|
||||
|
||||
private DateConf dateConf = new DateConf();
|
||||
|
||||
//result size of single id
|
||||
private Long limit;
|
||||
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.tencent.supersonic.headless.common.query.request;
|
||||
package com.tencent.supersonic.headless.common.core.request;
|
||||
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import java.util.List;
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.tencent.supersonic.headless.common.query.request;
|
||||
package com.tencent.supersonic.headless.common.core.request;
|
||||
|
||||
import com.google.common.collect.Lists;
|
||||
import lombok.Data;
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.tencent.supersonic.headless.common.query.request;
|
||||
package com.tencent.supersonic.headless.common.core.request;
|
||||
|
||||
import com.google.common.collect.Lists;
|
||||
import com.tencent.supersonic.common.pojo.Aggregator;
|
||||
@@ -12,8 +12,8 @@ import com.tencent.supersonic.common.util.ContextUtils;
|
||||
import com.tencent.supersonic.common.util.DateModeUtils;
|
||||
import com.tencent.supersonic.common.util.SqlFilterUtils;
|
||||
import com.tencent.supersonic.common.util.jsqlparser.SqlParserAddHelper;
|
||||
import com.tencent.supersonic.headless.common.query.pojo.Cache;
|
||||
import com.tencent.supersonic.headless.common.query.pojo.Param;
|
||||
import com.tencent.supersonic.headless.common.core.pojo.Cache;
|
||||
import com.tencent.supersonic.headless.common.core.pojo.Param;
|
||||
import lombok.Data;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import net.sf.jsqlparser.JSQLParserException;
|
||||
@@ -0,0 +1,15 @@
|
||||
package com.tencent.supersonic.headless.common.core.response;
|
||||
|
||||
import com.tencent.supersonic.headless.common.core.pojo.SingleItemQueryResult;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@Data
|
||||
@Builder
|
||||
public class ItemQueryResultResp {
|
||||
|
||||
private List<SingleItemQueryResult> results;
|
||||
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.tencent.supersonic.headless.common.query.response;
|
||||
package com.tencent.supersonic.headless.common.core.response;
|
||||
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.tencent.supersonic.headless.common.model.response;
|
||||
package com.tencent.supersonic.headless.common.core.response;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
@@ -1,6 +1,6 @@
|
||||
package com.tencent.supersonic.headless.common.model.enums;
|
||||
package com.tencent.supersonic.headless.common.server.enums;
|
||||
|
||||
public enum AppStatusEnum {
|
||||
public enum AppStatus {
|
||||
|
||||
INIT(0),
|
||||
ONLINE(1),
|
||||
@@ -10,7 +10,7 @@ public enum AppStatusEnum {
|
||||
|
||||
private Integer code;
|
||||
|
||||
AppStatusEnum(Integer code) {
|
||||
AppStatus(Integer code) {
|
||||
this.code = code;
|
||||
}
|
||||
|
||||
@@ -18,12 +18,12 @@ public enum AppStatusEnum {
|
||||
return code;
|
||||
}
|
||||
|
||||
public static AppStatusEnum fromCode(Integer code) {
|
||||
for (AppStatusEnum appStatusEnum : AppStatusEnum.values()) {
|
||||
public static AppStatus fromCode(Integer code) {
|
||||
for (AppStatus appStatusEnum : AppStatus.values()) {
|
||||
if (appStatusEnum.getCode().equals(code)) {
|
||||
return appStatusEnum;
|
||||
}
|
||||
}
|
||||
return AppStatusEnum.UNKNOWN;
|
||||
return AppStatus.UNKNOWN;
|
||||
}
|
||||
}
|
||||
@@ -1,11 +1,11 @@
|
||||
package com.tencent.supersonic.headless.common.model.enums;
|
||||
package com.tencent.supersonic.headless.common.server.enums;
|
||||
|
||||
|
||||
import com.tencent.supersonic.common.pojo.Constants;
|
||||
import java.util.HashSet;
|
||||
import java.util.Set;
|
||||
|
||||
public enum DataTypeEnum {
|
||||
public enum DataType {
|
||||
|
||||
MYSQL("mysql", "mysql", "com.mysql.cj.jdbc.Driver", "`", "`", "'", "'"),
|
||||
|
||||
@@ -50,8 +50,8 @@ public enum DataTypeEnum {
|
||||
private String aliasPrefix;
|
||||
private String aliasSuffix;
|
||||
|
||||
DataTypeEnum(String feature, String desc, String driver, String keywordPrefix, String keywordSuffix,
|
||||
String aliasPrefix, String aliasSuffix) {
|
||||
DataType(String feature, String desc, String driver, String keywordPrefix, String keywordSuffix,
|
||||
String aliasPrefix, String aliasSuffix) {
|
||||
this.feature = feature;
|
||||
this.desc = desc;
|
||||
this.driver = driver;
|
||||
@@ -61,9 +61,9 @@ public enum DataTypeEnum {
|
||||
this.aliasSuffix = aliasSuffix;
|
||||
}
|
||||
|
||||
public static DataTypeEnum urlOf(String jdbcUrl) throws RuntimeException {
|
||||
public static DataType urlOf(String jdbcUrl) throws RuntimeException {
|
||||
String url = jdbcUrl.toLowerCase().trim();
|
||||
for (DataTypeEnum dataTypeEnum : values()) {
|
||||
for (DataType dataTypeEnum : values()) {
|
||||
if (url.startsWith(String.format(Constants.JDBC_PREFIX_FORMATTER, dataTypeEnum.feature))) {
|
||||
return dataTypeEnum;
|
||||
}
|
||||
@@ -73,7 +73,7 @@ public enum DataTypeEnum {
|
||||
|
||||
public static Set<String> getAllSupportedDatasourceNameSet() {
|
||||
Set<String> datasourceSet = new HashSet<>();
|
||||
for (DataTypeEnum datasource : values()) {
|
||||
for (DataType datasource : values()) {
|
||||
datasourceSet.add(datasource.getFeature());
|
||||
}
|
||||
return datasourceSet;
|
||||
@@ -0,0 +1,9 @@
|
||||
package com.tencent.supersonic.headless.common.server.enums;
|
||||
|
||||
|
||||
public enum DimensionType {
|
||||
|
||||
categorical,
|
||||
time
|
||||
|
||||
}
|
||||
@@ -0,0 +1,8 @@
|
||||
package com.tencent.supersonic.headless.common.server.enums;
|
||||
|
||||
public enum IdentifyType {
|
||||
|
||||
primary,
|
||||
foreign,
|
||||
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
package com.tencent.supersonic.headless.common.server.enums;
|
||||
|
||||
|
||||
public enum MetricType {
|
||||
|
||||
ATOMIC,
|
||||
DERIVED
|
||||
|
||||
}
|
||||
@@ -1,14 +1,14 @@
|
||||
package com.tencent.supersonic.headless.common.model.enums;
|
||||
package com.tencent.supersonic.headless.common.server.enums;
|
||||
|
||||
import java.util.Objects;
|
||||
|
||||
public enum ModelSourceTypeEnum {
|
||||
public enum ModelSourceType {
|
||||
FULL,
|
||||
PARTITION,
|
||||
ZIPPER;
|
||||
|
||||
public static ModelSourceTypeEnum of(String src) {
|
||||
for (ModelSourceTypeEnum modelSourceTypeEnum : ModelSourceTypeEnum.values()) {
|
||||
public static ModelSourceType of(String src) {
|
||||
for (ModelSourceType modelSourceTypeEnum : ModelSourceType.values()) {
|
||||
if (Objects.nonNull(src) && src.equalsIgnoreCase(modelSourceTypeEnum.name())) {
|
||||
return modelSourceTypeEnum;
|
||||
}
|
||||
@@ -16,12 +16,12 @@ public enum ModelSourceTypeEnum {
|
||||
return null;
|
||||
}
|
||||
|
||||
public static boolean isZipper(ModelSourceTypeEnum modelSourceTypeEnum) {
|
||||
public static boolean isZipper(ModelSourceType modelSourceTypeEnum) {
|
||||
return Objects.nonNull(modelSourceTypeEnum) && ZIPPER.equals(modelSourceTypeEnum);
|
||||
}
|
||||
|
||||
public static boolean isZipper(String str) {
|
||||
ModelSourceTypeEnum modelSourceTypeEnum = of(str);
|
||||
ModelSourceType modelSourceTypeEnum = of(str);
|
||||
return Objects.nonNull(modelSourceTypeEnum) && isZipper(modelSourceTypeEnum);
|
||||
}
|
||||
}
|
||||
@@ -1,19 +1,19 @@
|
||||
package com.tencent.supersonic.headless.common.model.enums;
|
||||
package com.tencent.supersonic.headless.common.server.enums;
|
||||
|
||||
|
||||
public enum QueryTypeEnum {
|
||||
public enum QueryType {
|
||||
SQL("SQL"),
|
||||
|
||||
STRUCT("STRUCT");
|
||||
|
||||
private String value;
|
||||
|
||||
QueryTypeEnum(String value) {
|
||||
QueryType(String value) {
|
||||
this.value = value;
|
||||
}
|
||||
|
||||
public static QueryTypeEnum of(String src) {
|
||||
for (QueryTypeEnum operatorEnum : QueryTypeEnum.values()) {
|
||||
public static QueryType of(String src) {
|
||||
for (QueryType operatorEnum : QueryType.values()) {
|
||||
if (src.toUpperCase().contains(operatorEnum.value)) {
|
||||
return operatorEnum;
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
package com.tencent.supersonic.headless.common.server.enums;
|
||||
|
||||
public enum SemanticType {
|
||||
|
||||
CATEGORY,
|
||||
ID,
|
||||
DATE,
|
||||
NUMBER
|
||||
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.tencent.supersonic.headless.common.model.pojo;
|
||||
package com.tencent.supersonic.headless.common.server.pojo;
|
||||
|
||||
import com.google.common.collect.Lists;
|
||||
import lombok.Data;
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.tencent.supersonic.headless.common.model.pojo;
|
||||
package com.tencent.supersonic.headless.common.server.pojo;
|
||||
|
||||
import com.tencent.supersonic.common.pojo.Constants;
|
||||
import lombok.AllArgsConstructor;
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.tencent.supersonic.headless.common.model.pojo;
|
||||
package com.tencent.supersonic.headless.common.server.pojo;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.tencent.supersonic.headless.common.model.pojo;
|
||||
package com.tencent.supersonic.headless.common.server.pojo;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.tencent.supersonic.headless.common.model.pojo;
|
||||
package com.tencent.supersonic.headless.common.server.pojo;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.tencent.supersonic.headless.common.model.pojo;
|
||||
package com.tencent.supersonic.headless.common.server.pojo;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.tencent.supersonic.headless.common.model.pojo;
|
||||
package com.tencent.supersonic.headless.common.server.pojo;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.tencent.supersonic.headless.common.model.pojo;
|
||||
package com.tencent.supersonic.headless.common.server.pojo;
|
||||
|
||||
import com.google.common.collect.Lists;
|
||||
import com.tencent.supersonic.common.pojo.enums.ApiItemType;
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.tencent.supersonic.headless.common.model.pojo;
|
||||
package com.tencent.supersonic.headless.common.server.pojo;
|
||||
|
||||
import java.util.List;
|
||||
import lombok.AllArgsConstructor;
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.tencent.supersonic.headless.common.model.pojo;
|
||||
package com.tencent.supersonic.headless.common.server.pojo;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.tencent.supersonic.headless.common.model.pojo;
|
||||
package com.tencent.supersonic.headless.common.server.pojo;
|
||||
|
||||
import com.tencent.supersonic.common.pojo.RecordInfo;
|
||||
import lombok.Data;
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.tencent.supersonic.headless.common.model.pojo;
|
||||
package com.tencent.supersonic.headless.common.server.pojo;
|
||||
|
||||
import java.util.List;
|
||||
import com.google.common.collect.Lists;
|
||||
@@ -1,7 +1,7 @@
|
||||
package com.tencent.supersonic.headless.common.model.pojo;
|
||||
package com.tencent.supersonic.headless.common.server.pojo;
|
||||
|
||||
import com.google.common.collect.Lists;
|
||||
import com.tencent.supersonic.headless.common.model.enums.DimensionTypeEnum;
|
||||
import com.tencent.supersonic.headless.common.server.enums.DimensionType;
|
||||
import lombok.Data;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.util.CollectionUtils;
|
||||
@@ -37,7 +37,7 @@ public class ModelDetail {
|
||||
return Lists.newArrayList();
|
||||
}
|
||||
return dimensions.stream()
|
||||
.filter(dim -> DimensionTypeEnum.time.name().equalsIgnoreCase(dim.getType()))
|
||||
.filter(dim -> DimensionType.time.name().equalsIgnoreCase(dim.getType()))
|
||||
.collect(Collectors.toList());
|
||||
}
|
||||
|
||||
@@ -1,10 +1,11 @@
|
||||
package com.tencent.supersonic.headless.common.model.pojo;
|
||||
package com.tencent.supersonic.headless.common.server.pojo;
|
||||
|
||||
import lombok.Data;
|
||||
import lombok.ToString;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import lombok.Data;
|
||||
import lombok.ToString;
|
||||
|
||||
@Data
|
||||
@ToString
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.tencent.supersonic.headless.common.model.pojo;
|
||||
package com.tencent.supersonic.headless.common.server.pojo;
|
||||
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.google.common.collect.Lists;
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.tencent.supersonic.headless.common.model.pojo;
|
||||
package com.tencent.supersonic.headless.common.server.pojo;
|
||||
|
||||
import com.google.common.collect.Lists;
|
||||
import lombok.AllArgsConstructor;
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.tencent.supersonic.headless.common.model.pojo;
|
||||
package com.tencent.supersonic.headless.common.server.pojo;
|
||||
|
||||
import com.google.common.base.Objects;
|
||||
import com.tencent.supersonic.common.pojo.RecordInfo;
|
||||
@@ -1,9 +1,9 @@
|
||||
package com.tencent.supersonic.headless.common.model.request;
|
||||
package com.tencent.supersonic.headless.common.server.request;
|
||||
|
||||
|
||||
import com.google.common.collect.Lists;
|
||||
import com.tencent.supersonic.common.pojo.PageBaseReq;
|
||||
import com.tencent.supersonic.headless.common.model.enums.AppStatusEnum;
|
||||
import com.tencent.supersonic.headless.common.server.enums.AppStatus;
|
||||
import lombok.Data;
|
||||
import org.springframework.util.CollectionUtils;
|
||||
|
||||
@@ -15,7 +15,7 @@ public class AppQueryReq extends PageBaseReq {
|
||||
|
||||
private String name;
|
||||
|
||||
private List<AppStatusEnum> appStatus;
|
||||
private List<AppStatus> appStatus;
|
||||
|
||||
private String createdBy;
|
||||
|
||||
@@ -23,7 +23,7 @@ public class AppQueryReq extends PageBaseReq {
|
||||
if (CollectionUtils.isEmpty(appStatus)) {
|
||||
return Lists.newArrayList();
|
||||
}
|
||||
return appStatus.stream().map(AppStatusEnum::getCode).collect(Collectors.toList());
|
||||
return appStatus.stream().map(AppStatus::getCode).collect(Collectors.toList());
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,7 +1,7 @@
|
||||
package com.tencent.supersonic.headless.common.model.request;
|
||||
package com.tencent.supersonic.headless.common.server.request;
|
||||
|
||||
import com.tencent.supersonic.common.pojo.RecordInfo;
|
||||
import com.tencent.supersonic.headless.common.model.pojo.AppConfig;
|
||||
import com.tencent.supersonic.headless.common.server.pojo.AppConfig;
|
||||
import lombok.Data;
|
||||
import org.springframework.util.CollectionUtils;
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
package com.tencent.supersonic.headless.common.model.request;
|
||||
package com.tencent.supersonic.headless.common.server.request;
|
||||
|
||||
import com.google.common.collect.Lists;
|
||||
import com.tencent.supersonic.headless.common.model.enums.DataTypeEnum;
|
||||
import com.tencent.supersonic.headless.common.server.enums.DataType;
|
||||
import lombok.Data;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import java.util.List;
|
||||
@@ -46,7 +46,7 @@ public class DatabaseReq {
|
||||
} else {
|
||||
databaseUrl = "/" + database;
|
||||
}
|
||||
if (type.equalsIgnoreCase(DataTypeEnum.MYSQL.getFeature())) {
|
||||
if (type.equalsIgnoreCase(DataType.MYSQL.getFeature())) {
|
||||
return String.format("jdbc:%s://%s:%s%s?sessionVariables=sql_mode='IGNORE_SPACE'&allowMultiQueries=true",
|
||||
type, host, port, databaseUrl);
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.tencent.supersonic.headless.common.model.request;
|
||||
package com.tencent.supersonic.headless.common.server.request;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
@@ -1,8 +1,8 @@
|
||||
package com.tencent.supersonic.headless.common.model.request;
|
||||
package com.tencent.supersonic.headless.common.server.request;
|
||||
|
||||
import com.tencent.supersonic.common.pojo.enums.DataTypeEnums;
|
||||
import com.tencent.supersonic.headless.common.model.pojo.DimValueMap;
|
||||
import com.tencent.supersonic.headless.common.model.pojo.SchemaItem;
|
||||
import com.tencent.supersonic.headless.common.server.pojo.DimValueMap;
|
||||
import com.tencent.supersonic.headless.common.server.pojo.SchemaItem;
|
||||
import lombok.Data;
|
||||
|
||||
import javax.validation.constraints.NotNull;
|
||||
@@ -1,7 +1,7 @@
|
||||
package com.tencent.supersonic.headless.common.model.request;
|
||||
package com.tencent.supersonic.headless.common.server.request;
|
||||
|
||||
|
||||
import com.tencent.supersonic.headless.common.model.pojo.SchemaItem;
|
||||
import com.tencent.supersonic.headless.common.server.pojo.SchemaItem;
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.ArrayList;
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.tencent.supersonic.headless.common.model.request;
|
||||
package com.tencent.supersonic.headless.common.server.request;
|
||||
|
||||
|
||||
import lombok.Data;
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.tencent.supersonic.headless.common.model.request;
|
||||
package com.tencent.supersonic.headless.common.server.request;
|
||||
|
||||
import lombok.Data;
|
||||
import java.util.List;
|
||||
@@ -1,8 +1,8 @@
|
||||
package com.tencent.supersonic.headless.common.model.request;
|
||||
package com.tencent.supersonic.headless.common.server.request;
|
||||
|
||||
import com.tencent.supersonic.common.pojo.DataFormat;
|
||||
import com.tencent.supersonic.headless.common.model.pojo.RelateDimension;
|
||||
import com.tencent.supersonic.headless.common.model.pojo.SchemaItem;
|
||||
import com.tencent.supersonic.headless.common.server.pojo.RelateDimension;
|
||||
import com.tencent.supersonic.headless.common.server.pojo.SchemaItem;
|
||||
import lombok.Data;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.util.CollectionUtils;
|
||||
@@ -1,28 +1,28 @@
|
||||
package com.tencent.supersonic.headless.common.model.request;
|
||||
package com.tencent.supersonic.headless.common.server.request;
|
||||
|
||||
|
||||
import com.tencent.supersonic.headless.common.model.enums.MetricTypeEnum;
|
||||
import com.tencent.supersonic.headless.common.model.pojo.Measure;
|
||||
import com.tencent.supersonic.headless.common.model.pojo.MetricTypeParams;
|
||||
import com.tencent.supersonic.headless.common.server.enums.MetricType;
|
||||
import com.tencent.supersonic.headless.common.server.pojo.Measure;
|
||||
import com.tencent.supersonic.headless.common.server.pojo.MetricTypeParams;
|
||||
import lombok.Data;
|
||||
import java.util.List;
|
||||
|
||||
@Data
|
||||
public class MetricReq extends MetricBaseReq {
|
||||
|
||||
private MetricTypeEnum metricType;
|
||||
private MetricType metricType;
|
||||
|
||||
private MetricTypeParams typeParams;
|
||||
|
||||
public MetricTypeEnum getMetricType() {
|
||||
public MetricType getMetricType() {
|
||||
if (metricType != null) {
|
||||
return metricType;
|
||||
}
|
||||
List<Measure> measureList = typeParams.getMeasures();
|
||||
if (measureList.size() == 1 && typeParams.getExpr().trim().equalsIgnoreCase(measureList.get(0).getBizName())) {
|
||||
return MetricTypeEnum.ATOMIC;
|
||||
return MetricType.ATOMIC;
|
||||
} else if (measureList.size() >= 1) {
|
||||
return MetricTypeEnum.DERIVED;
|
||||
return MetricType.DERIVED;
|
||||
}
|
||||
throw new RuntimeException("measure can not be none");
|
||||
}
|
||||
@@ -1,11 +1,11 @@
|
||||
package com.tencent.supersonic.headless.common.model.request;
|
||||
package com.tencent.supersonic.headless.common.server.request;
|
||||
|
||||
|
||||
import com.google.common.collect.Lists;
|
||||
import com.tencent.supersonic.headless.common.model.pojo.Dim;
|
||||
import com.tencent.supersonic.headless.common.model.pojo.DrillDownDimension;
|
||||
import com.tencent.supersonic.headless.common.model.pojo.ModelDetail;
|
||||
import com.tencent.supersonic.headless.common.model.pojo.SchemaItem;
|
||||
import com.tencent.supersonic.headless.common.server.pojo.Dim;
|
||||
import com.tencent.supersonic.headless.common.server.pojo.DrillDownDimension;
|
||||
import com.tencent.supersonic.headless.common.server.pojo.ModelDetail;
|
||||
import com.tencent.supersonic.headless.common.server.pojo.SchemaItem;
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.List;
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.tencent.supersonic.headless.common.model.request;
|
||||
package com.tencent.supersonic.headless.common.server.request;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.tencent.supersonic.headless.common.model.request;
|
||||
package com.tencent.supersonic.headless.common.server.request;
|
||||
|
||||
|
||||
import lombok.Data;
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.tencent.supersonic.headless.common.model.request;
|
||||
package com.tencent.supersonic.headless.common.server.request;
|
||||
|
||||
|
||||
import lombok.Data;
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.tencent.supersonic.headless.common.model.request;
|
||||
package com.tencent.supersonic.headless.common.server.request;
|
||||
|
||||
import com.google.common.collect.Lists;
|
||||
import com.tencent.supersonic.common.pojo.PageBaseReq;
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.tencent.supersonic.headless.common.model.request;
|
||||
package com.tencent.supersonic.headless.common.server.request;
|
||||
|
||||
|
||||
import javax.validation.constraints.NotBlank;
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.tencent.supersonic.headless.common.model.request;
|
||||
package com.tencent.supersonic.headless.common.server.request;
|
||||
|
||||
import java.util.Date;
|
||||
import lombok.Data;
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.tencent.supersonic.headless.common.model.response;
|
||||
package com.tencent.supersonic.headless.common.server.response;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
package com.tencent.supersonic.headless.common.model.response;
|
||||
package com.tencent.supersonic.headless.common.server.response;
|
||||
|
||||
|
||||
import com.google.common.collect.Lists;
|
||||
import com.tencent.supersonic.common.pojo.RecordInfo;
|
||||
import com.tencent.supersonic.headless.common.model.enums.AppStatusEnum;
|
||||
import com.tencent.supersonic.headless.common.model.pojo.AppConfig;
|
||||
import com.tencent.supersonic.headless.common.server.enums.AppStatus;
|
||||
import com.tencent.supersonic.headless.common.server.pojo.AppConfig;
|
||||
import lombok.Data;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
|
||||
@@ -21,7 +21,7 @@ public class AppResp extends RecordInfo {
|
||||
|
||||
private String description;
|
||||
|
||||
private AppStatusEnum appStatus;
|
||||
private AppStatus appStatus;
|
||||
|
||||
private AppConfig config;
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user