(feature)(headless) Add a new headless-api module and Change old headless-api module to headless-common (#582)

* (improvement)(headless) Add headless-api module

* (improvement)(headless) Change old headless-api module to headless-common

---------

Co-authored-by: jolunoluo <jolunoluo@tencent.com>
This commit is contained in:
LXW
2023-12-28 22:14:57 +08:00
committed by GitHub
parent 9e69002d70
commit af6c8cdbda
270 changed files with 1310 additions and 1155 deletions

View File

@@ -23,7 +23,7 @@
</dependency>
<dependency>
<groupId>com.tencent.supersonic</groupId>
<artifactId>headless-api</artifactId>
<artifactId>headless-common</artifactId>
<version>${project.version}</version>
<scope>compile</scope>
</dependency>

View File

@@ -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.api.model.request.PageDimensionReq;
import com.tencent.supersonic.headless.api.model.request.PageMetricReq;
import com.tencent.supersonic.headless.api.model.response.DomainResp;
import com.tencent.supersonic.headless.api.model.response.DimensionResp;
import com.tencent.supersonic.headless.api.model.response.ExplainResp;
import com.tencent.supersonic.headless.api.model.response.MetricResp;
import com.tencent.supersonic.headless.api.model.response.ModelResp;
import com.tencent.supersonic.headless.api.model.response.ModelSchemaResp;
import com.tencent.supersonic.headless.api.model.response.QueryResultWithSchemaResp;
import com.tencent.supersonic.headless.api.query.request.ExplainSqlReq;
import com.tencent.supersonic.headless.api.query.request.QueryDimValueReq;
import com.tencent.supersonic.headless.api.query.request.QueryS2SQLReq;
import com.tencent.supersonic.headless.api.query.request.QueryMultiStructReq;
import com.tencent.supersonic.headless.api.query.request.QueryStructReq;
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 java.util.List;

View File

@@ -17,4 +17,6 @@ public class QueryResp {
private QueryResult queryResult;
private List<SemanticParseInfo> parseInfos;
private List<SimilarQueryRecallResp> similarQueries;
}

View File

@@ -77,7 +77,7 @@
</dependency>
<dependency>
<groupId>com.tencent.supersonic</groupId>
<artifactId>headless-api</artifactId>
<artifactId>headless-common</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>

View File

@@ -1,8 +1,8 @@
package com.tencent.supersonic.chat.config;
import com.tencent.supersonic.headless.api.model.response.DimSchemaResp;
import com.tencent.supersonic.headless.api.model.response.MetricSchemaResp;
import com.tencent.supersonic.headless.common.model.response.DimSchemaResp;
import com.tencent.supersonic.headless.common.model.response.MetricSchemaResp;
import java.util.List;
import lombok.Data;

View File

@@ -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.api.model.pojo.SchemaItem;
import com.tencent.supersonic.headless.api.model.response.ModelSchemaResp;
import com.tencent.supersonic.headless.common.model.pojo.SchemaItem;
import com.tencent.supersonic.headless.common.model.response.ModelSchemaResp;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.HashSet;

View File

@@ -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.api.model.enums.QueryTypeEnum;
import com.tencent.supersonic.headless.api.model.response.ExplainResp;
import com.tencent.supersonic.headless.api.query.request.ExplainSqlReq;
import com.tencent.supersonic.headless.api.query.request.QueryS2SQLReq;
import com.tencent.supersonic.headless.api.query.request.QueryStructReq;
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 lombok.ToString;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;

View File

@@ -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.api.model.response.QueryResultWithSchemaResp;
import com.tencent.supersonic.headless.api.query.request.QueryStructReq;
import com.tencent.supersonic.headless.common.model.response.QueryResultWithSchemaResp;
import com.tencent.supersonic.headless.common.query.request.QueryStructReq;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

View File

@@ -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.api.model.response.QueryResultWithSchemaResp;
import com.tencent.supersonic.headless.api.query.request.QueryS2SQLReq;
import com.tencent.supersonic.headless.common.model.response.QueryResultWithSchemaResp;
import com.tencent.supersonic.headless.common.query.request.QueryS2SQLReq;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;

View File

@@ -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.api.model.response.QueryResultWithSchemaResp;
import com.tencent.supersonic.headless.api.query.request.QueryMultiStructReq;
import com.tencent.supersonic.headless.api.query.request.QueryStructReq;
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 lombok.ToString;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;

View File

@@ -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.api.query.request.QueryMultiStructReq;
import com.tencent.supersonic.headless.api.query.request.QueryStructReq;
import com.tencent.supersonic.headless.common.query.request.QueryMultiStructReq;
import com.tencent.supersonic.headless.common.query.request.QueryStructReq;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;

View File

@@ -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.api.model.response.QueryResultWithSchemaResp;
import com.tencent.supersonic.headless.common.model.response.QueryResultWithSchemaResp;
import java.time.LocalDate;
import java.util.List;
import java.util.Objects;

View File

@@ -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.api.query.request.QueryMultiStructReq;
import com.tencent.supersonic.headless.api.query.request.QueryStructReq;
import com.tencent.supersonic.headless.common.query.request.QueryMultiStructReq;
import com.tencent.supersonic.headless.common.query.request.QueryStructReq;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;

View File

@@ -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.api.model.request.PageDimensionReq;
import com.tencent.supersonic.headless.api.model.request.PageMetricReq;
import com.tencent.supersonic.headless.api.model.response.DimensionResp;
import com.tencent.supersonic.headless.api.model.response.DomainResp;
import com.tencent.supersonic.headless.api.model.response.MetricResp;
import com.tencent.supersonic.headless.api.model.response.ModelResp;
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 org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;

View File

@@ -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.api.model.response.QueryResultWithSchemaResp;
import com.tencent.supersonic.headless.api.query.request.QueryStructReq;
import com.tencent.supersonic.headless.common.model.response.QueryResultWithSchemaResp;
import com.tencent.supersonic.headless.common.query.request.QueryStructReq;
import com.tencent.supersonic.knowledge.service.SchemaService;
import java.text.DecimalFormat;
import java.time.DayOfWeek;

View File

@@ -31,9 +31,9 @@ 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.api.model.pojo.SchemaItem;
import com.tencent.supersonic.headless.api.model.response.DimensionResp;
import com.tencent.supersonic.headless.api.model.response.MetricResp;
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;

View File

@@ -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.api.model.response.ModelResp;
import com.tencent.supersonic.headless.common.model.response.ModelResp;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils;

View File

@@ -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.api.model.response.QueryResultWithSchemaResp;
import com.tencent.supersonic.headless.api.query.request.QueryStructReq;
import com.tencent.supersonic.headless.common.model.response.QueryResultWithSchemaResp;
import com.tencent.supersonic.headless.common.query.request.QueryStructReq;
import lombok.extern.slf4j.Slf4j;
import net.sf.jsqlparser.expression.Expression;
import net.sf.jsqlparser.expression.LongValue;

View File

@@ -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.api.model.request.PageDimensionReq;
import com.tencent.supersonic.headless.api.model.response.DimensionResp;
import com.tencent.supersonic.headless.common.model.request.PageDimensionReq;
import com.tencent.supersonic.headless.common.model.response.DimensionResp;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;

View File

@@ -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.api.model.response.QueryResultWithSchemaResp;
import com.tencent.supersonic.headless.api.query.request.QueryStructReq;
import com.tencent.supersonic.headless.common.model.response.QueryResultWithSchemaResp;
import com.tencent.supersonic.headless.common.query.request.QueryStructReq;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;

View File

@@ -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.api.query.request.QueryMultiStructReq;
import com.tencent.supersonic.headless.api.query.request.QueryS2SQLReq;
import com.tencent.supersonic.headless.api.query.request.QueryStructReq;
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 lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.apache.logging.log4j.util.Strings;

View File

@@ -15,11 +15,11 @@ 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.api.model.response.DimSchemaResp;
import com.tencent.supersonic.headless.api.model.response.DimensionResp;
import com.tencent.supersonic.headless.api.model.response.MetricResp;
import com.tencent.supersonic.headless.api.model.response.MetricSchemaResp;
import com.tencent.supersonic.headless.api.model.response.ModelSchemaResp;
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;

View File

@@ -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.api.query.request.QueryS2SQLReq;
import com.tencent.supersonic.headless.api.query.request.QueryStructReq;
import com.tencent.supersonic.headless.common.query.request.QueryS2SQLReq;
import com.tencent.supersonic.headless.common.query.request.QueryStructReq;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

View File

@@ -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.api.model.response.ModelSchemaResp;
import com.tencent.supersonic.headless.common.model.response.ModelSchemaResp;
import java.util.ArrayList;
import java.util.List;
import java.util.Optional;

View File

@@ -5,21 +5,21 @@ 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.api.model.request.ModelSchemaFilterReq;
import com.tencent.supersonic.headless.api.model.request.PageDimensionReq;
import com.tencent.supersonic.headless.api.model.request.PageMetricReq;
import com.tencent.supersonic.headless.api.model.response.DimensionResp;
import com.tencent.supersonic.headless.api.model.response.DomainResp;
import com.tencent.supersonic.headless.api.model.response.ExplainResp;
import com.tencent.supersonic.headless.api.model.response.MetricResp;
import com.tencent.supersonic.headless.api.model.response.ModelResp;
import com.tencent.supersonic.headless.api.model.response.ModelSchemaResp;
import com.tencent.supersonic.headless.api.model.response.QueryResultWithSchemaResp;
import com.tencent.supersonic.headless.api.query.request.ExplainSqlReq;
import com.tencent.supersonic.headless.api.query.request.QueryDimValueReq;
import com.tencent.supersonic.headless.api.query.request.QueryMultiStructReq;
import com.tencent.supersonic.headless.api.query.request.QueryS2SQLReq;
import com.tencent.supersonic.headless.api.query.request.QueryStructReq;
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;

View File

@@ -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.api.model.pojo.DimValueMap;
import com.tencent.supersonic.headless.api.model.pojo.RelateDimension;
import com.tencent.supersonic.headless.api.model.pojo.SchemaItem;
import com.tencent.supersonic.headless.api.model.response.DimSchemaResp;
import com.tencent.supersonic.headless.api.model.response.MetricSchemaResp;
import com.tencent.supersonic.headless.api.model.response.ModelSchemaResp;
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 org.apache.logging.log4j.util.Strings;
import org.springframework.beans.BeanUtils;
import org.springframework.util.CollectionUtils;

View File

@@ -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.api.model.request.ModelSchemaFilterReq;
import com.tencent.supersonic.headless.api.model.request.PageDimensionReq;
import com.tencent.supersonic.headless.api.model.request.PageMetricReq;
import com.tencent.supersonic.headless.api.model.response.DimensionResp;
import com.tencent.supersonic.headless.api.model.response.DomainResp;
import com.tencent.supersonic.headless.api.model.response.ExplainResp;
import com.tencent.supersonic.headless.api.model.response.MetricResp;
import com.tencent.supersonic.headless.api.model.response.ModelResp;
import com.tencent.supersonic.headless.api.model.response.ModelSchemaResp;
import com.tencent.supersonic.headless.api.model.response.QueryResultWithSchemaResp;
import com.tencent.supersonic.headless.api.query.request.ExplainSqlReq;
import com.tencent.supersonic.headless.api.query.request.QueryDimValueReq;
import com.tencent.supersonic.headless.api.query.request.QueryMultiStructReq;
import com.tencent.supersonic.headless.api.query.request.QueryS2SQLReq;
import com.tencent.supersonic.headless.api.query.request.QueryStructReq;
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 java.net.URI;
import java.net.URL;
import java.util.HashMap;

View File

@@ -2,68 +2,27 @@
<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>
<parent>
<groupId>com.tencent.supersonic</groupId>
<artifactId>headless</artifactId>
<version>${revision}</version>
<version>0.8.2-SNAPSHOT</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>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>
<artifactId>headless-query</artifactId>
<version>${project.version}</version>
</dependency>
</dependencies>
</project>

View File

@@ -1,4 +1,4 @@
package com.tencent.supersonic.headless.query.annotation;
package com.tencent.supersonic.headless.api.annotation;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
@@ -7,6 +7,6 @@ import java.lang.annotation.Target;
@Target({ElementType.PARAMETER, ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
public @interface ApiDataPermission {
public @interface ApiHeaderCheck {
}

View File

@@ -1,11 +1,11 @@
package com.tencent.supersonic.headless.query.aspect;
package com.tencent.supersonic.headless.api.aspect;
import com.tencent.supersonic.common.pojo.Pair;
import com.tencent.supersonic.common.pojo.exception.InvalidArgumentException;
import com.tencent.supersonic.common.util.SignatureUtils;
import com.tencent.supersonic.headless.api.model.enums.AppStatusEnum;
import com.tencent.supersonic.headless.api.model.response.AppDetailResp;
import com.tencent.supersonic.headless.model.domain.AppService;
import com.tencent.supersonic.headless.api.service.AppService;
import com.tencent.supersonic.headless.common.model.enums.AppStatusEnum;
import com.tencent.supersonic.headless.common.model.response.AppDetailResp;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.aspectj.lang.ProceedingJoinPoint;
@@ -15,13 +15,14 @@ import org.aspectj.lang.annotation.Pointcut;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Component;
import javax.servlet.http.HttpServletRequest;
@Component
@Aspect
@Order(1)
@Slf4j
public class ApiDataAspect {
public class ApiHeaderCheckAspect {
public static final String APPID = "appId";
@@ -32,7 +33,7 @@ public class ApiDataAspect {
@Autowired
private AppService appService;
@Pointcut("@annotation(com.tencent.supersonic.headless.query.annotation.ApiDataPermission)")
@Pointcut("@annotation(com.tencent.supersonic.headless.api.annotation.ApiHeaderCheck)")
private void apiPermissionCheck() {
}

View File

@@ -1,8 +0,0 @@
package com.tencent.supersonic.headless.api.materialization.enums;
public enum UpdateCycleEnum {
DAY,
WEEK,
MONTH
}

View File

@@ -1,9 +0,0 @@
package com.tencent.supersonic.headless.api.model.enums;
public enum MetricTypeEnum {
ATOMIC,
DERIVED
}

View File

@@ -1,13 +0,0 @@
package com.tencent.supersonic.headless.api.model.pojo;
import com.google.common.collect.Lists;
import lombok.Data;
import java.util.List;
@Data
public class AppConfig {
private List<Item> items = Lists.newArrayList();
}

View File

@@ -1,4 +1,4 @@
package com.tencent.supersonic.headless.model.domain.dataobject;
package com.tencent.supersonic.headless.api.persistence.dataobject;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
@@ -12,7 +12,7 @@ import java.util.Date;
public class AppDO {
@TableId(type = IdType.AUTO)
private Long id;
private Integer id;
private String name;

View File

@@ -1,7 +1,7 @@
package com.tencent.supersonic.headless.model.infrastructure.mapper;
package com.tencent.supersonic.headless.api.persistence.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.tencent.supersonic.headless.model.domain.dataobject.AppDO;
import com.tencent.supersonic.headless.api.persistence.dataobject.AppDO;
import org.apache.ibatis.annotations.Mapper;
@Mapper

View File

@@ -1,15 +0,0 @@
package com.tencent.supersonic.headless.api.query.pojo;
import com.tencent.supersonic.headless.api.model.pojo.Item;
import com.tencent.supersonic.headless.api.model.response.QueryResultWithSchemaResp;
import lombok.Data;
@Data
public class ApiQuerySingleResult {
private Item item;
private QueryResultWithSchemaResp result;
}

View File

@@ -0,0 +1,43 @@
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);
}
}

View File

@@ -1,13 +1,13 @@
package com.tencent.supersonic.headless.model.rest;
package com.tencent.supersonic.headless.api.rest;
import com.github.pagehelper.PageInfo;
import com.tencent.supersonic.auth.api.authentication.pojo.User;
import com.tencent.supersonic.auth.api.authentication.utils.UserHolder;
import com.tencent.supersonic.headless.api.model.request.AppQueryReq;
import com.tencent.supersonic.headless.api.model.request.AppReq;
import com.tencent.supersonic.headless.api.model.response.AppDetailResp;
import com.tencent.supersonic.headless.api.model.response.AppResp;
import com.tencent.supersonic.headless.model.domain.AppService;
import com.tencent.supersonic.headless.api.service.AppService;
import com.tencent.supersonic.headless.common.model.request.AppQueryReq;
import com.tencent.supersonic.headless.common.model.request.AppReq;
import com.tencent.supersonic.headless.common.model.response.AppDetailResp;
import com.tencent.supersonic.headless.common.model.response.AppResp;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;

View File

@@ -0,0 +1,47 @@
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);
}

View File

@@ -1,12 +1,12 @@
package com.tencent.supersonic.headless.model.domain;
package com.tencent.supersonic.headless.api.service;
import com.github.pagehelper.PageInfo;
import com.tencent.supersonic.auth.api.authentication.pojo.User;
import com.tencent.supersonic.headless.api.model.request.AppQueryReq;
import com.tencent.supersonic.headless.api.model.request.AppReq;
import com.tencent.supersonic.headless.api.model.response.AppDetailResp;
import com.tencent.supersonic.headless.api.model.response.AppResp;
import com.tencent.supersonic.headless.common.model.request.AppQueryReq;
import com.tencent.supersonic.headless.common.model.request.AppReq;
import com.tencent.supersonic.headless.common.model.response.AppDetailResp;
import com.tencent.supersonic.headless.common.model.response.AppResp;
public interface AppService {

View File

@@ -0,0 +1,177 @@
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();
}
}
}

View File

@@ -1,4 +1,4 @@
package com.tencent.supersonic.headless.model.application;
package com.tencent.supersonic.headless.api.service.impl;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
@@ -10,20 +10,20 @@ import com.tencent.supersonic.common.pojo.exception.InvalidArgumentException;
import com.tencent.supersonic.common.pojo.exception.InvalidPermissionException;
import com.tencent.supersonic.common.util.BeanMapper;
import com.tencent.supersonic.common.util.PageUtils;
import com.tencent.supersonic.headless.api.model.enums.AppStatusEnum;
import com.tencent.supersonic.headless.api.model.pojo.AppConfig;
import com.tencent.supersonic.headless.api.model.request.AppQueryReq;
import com.tencent.supersonic.headless.api.model.request.AppReq;
import com.tencent.supersonic.headless.api.model.response.AppDetailResp;
import com.tencent.supersonic.headless.api.model.response.AppResp;
import com.tencent.supersonic.headless.api.model.response.DimensionResp;
import com.tencent.supersonic.headless.api.model.response.MetricResp;
import com.tencent.supersonic.headless.model.domain.AppService;
import com.tencent.supersonic.headless.api.persistence.dataobject.AppDO;
import com.tencent.supersonic.headless.api.persistence.mapper.AppMapper;
import com.tencent.supersonic.headless.api.service.AppService;
import com.tencent.supersonic.headless.common.model.enums.AppStatusEnum;
import com.tencent.supersonic.headless.common.model.pojo.AppConfig;
import com.tencent.supersonic.headless.common.model.request.AppQueryReq;
import com.tencent.supersonic.headless.common.model.request.AppReq;
import com.tencent.supersonic.headless.common.model.response.AppDetailResp;
import com.tencent.supersonic.headless.common.model.response.AppResp;
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.dataobject.AppDO;
import com.tencent.supersonic.headless.model.domain.pojo.MetaFilter;
import com.tencent.supersonic.headless.model.infrastructure.mapper.AppMapper;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;

69
headless/common/pom.xml Normal file
View File

@@ -0,0 +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">
<parent>
<groupId>com.tencent.supersonic</groupId>
<artifactId>headless</artifactId>
<version>${revision}</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>headless-common</artifactId>
<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>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>

View File

@@ -1,4 +1,4 @@
package com.tencent.supersonic.headless.api.materialization.enums;
package com.tencent.supersonic.headless.common.materialization.enums;
public enum ElementFrequencyEnum {

View File

@@ -1,4 +1,4 @@
package com.tencent.supersonic.headless.api.materialization.enums;
package com.tencent.supersonic.headless.common.materialization.enums;
public enum ElementTypeEnum {

View File

@@ -0,0 +1,8 @@
package com.tencent.supersonic.headless.common.materialization.enums;
public enum UpdateCycleEnum {
DAY,
WEEK,
MONTH
}

View File

@@ -1,4 +1,4 @@
package com.tencent.supersonic.headless.api.materialization.pojo;
package com.tencent.supersonic.headless.common.materialization.pojo;
import com.tencent.supersonic.common.pojo.enums.TypeEnums;
import lombok.Data;

View File

@@ -1,4 +1,4 @@
package com.tencent.supersonic.headless.api.materialization.pojo;
package com.tencent.supersonic.headless.common.materialization.pojo;
import lombok.Data;

View File

@@ -1,7 +1,7 @@
package com.tencent.supersonic.headless.api.materialization.pojo;
package com.tencent.supersonic.headless.common.materialization.pojo;
import com.tencent.supersonic.headless.api.model.enums.ModelSourceTypeEnum;
import com.tencent.supersonic.headless.api.materialization.enums.UpdateCycleEnum;
import com.tencent.supersonic.headless.common.model.enums.ModelSourceTypeEnum;
import com.tencent.supersonic.headless.common.materialization.enums.UpdateCycleEnum;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;

View File

@@ -1,4 +1,4 @@
package com.tencent.supersonic.headless.api.materialization.pojo;
package com.tencent.supersonic.headless.common.materialization.pojo;
import com.tencent.supersonic.common.pojo.enums.TaskStatusEnum;

View File

@@ -1,11 +1,11 @@
package com.tencent.supersonic.headless.api.materialization.request;
package com.tencent.supersonic.headless.common.materialization.request;
import com.tencent.supersonic.common.pojo.RecordInfo;
import com.tencent.supersonic.common.pojo.enums.StatusEnum;
import com.tencent.supersonic.common.pojo.enums.TypeEnums;
import com.tencent.supersonic.headless.api.materialization.enums.ElementFrequencyEnum;
import com.tencent.supersonic.headless.api.materialization.enums.ElementTypeEnum;
import com.tencent.supersonic.headless.common.materialization.enums.ElementFrequencyEnum;
import com.tencent.supersonic.headless.common.materialization.enums.ElementTypeEnum;
import lombok.Builder;
import lombok.Data;

View File

@@ -1,4 +1,4 @@
package com.tencent.supersonic.headless.api.materialization.request;
package com.tencent.supersonic.headless.common.materialization.request;
import com.tencent.supersonic.common.pojo.RecordInfo;

View File

@@ -1,9 +1,9 @@
package com.tencent.supersonic.headless.api.materialization.request;
package com.tencent.supersonic.headless.common.materialization.request;
import com.tencent.supersonic.common.pojo.RecordInfo;
import com.tencent.supersonic.common.pojo.enums.StatusEnum;
import com.tencent.supersonic.headless.api.materialization.enums.UpdateCycleEnum;
import com.tencent.supersonic.headless.api.model.enums.ModelSourceTypeEnum;
import com.tencent.supersonic.headless.common.materialization.enums.UpdateCycleEnum;
import com.tencent.supersonic.headless.common.model.enums.ModelSourceTypeEnum;
import lombok.Data;
import java.util.List;

View File

@@ -1,4 +1,4 @@
package com.tencent.supersonic.headless.api.materialization.request;
package com.tencent.supersonic.headless.common.materialization.request;
import lombok.Data;

View File

@@ -1,4 +1,4 @@
package com.tencent.supersonic.headless.api.materialization.response;
package com.tencent.supersonic.headless.common.materialization.response;
import com.tencent.supersonic.common.pojo.enums.TypeEnums;
import lombok.Data;

View File

@@ -1,8 +1,8 @@
package com.tencent.supersonic.headless.api.materialization.response;
package com.tencent.supersonic.headless.common.materialization.response;
import com.google.common.collect.Lists;
import com.tencent.supersonic.common.pojo.enums.TypeEnums;
import com.tencent.supersonic.headless.api.model.pojo.Measure;
import com.tencent.supersonic.headless.common.model.pojo.Measure;
import java.util.List;
import lombok.Builder;
import lombok.Data;

View File

@@ -1,10 +1,10 @@
package com.tencent.supersonic.headless.api.materialization.response;
package com.tencent.supersonic.headless.common.materialization.response;
import com.tencent.supersonic.common.pojo.RecordInfo;
import com.tencent.supersonic.common.pojo.enums.TypeEnums;
import com.tencent.supersonic.headless.api.materialization.enums.ElementFrequencyEnum;
import com.tencent.supersonic.headless.api.materialization.enums.ElementTypeEnum;
import com.tencent.supersonic.headless.common.materialization.enums.ElementFrequencyEnum;
import com.tencent.supersonic.headless.common.materialization.enums.ElementTypeEnum;
import lombok.Data;
@Data

View File

@@ -1,4 +1,4 @@
package com.tencent.supersonic.headless.api.materialization.response;
package com.tencent.supersonic.headless.common.materialization.response;
import com.tencent.supersonic.common.pojo.RecordInfo;

View File

@@ -1,8 +1,8 @@
package com.tencent.supersonic.headless.api.materialization.response;
package com.tencent.supersonic.headless.common.materialization.response;
import com.tencent.supersonic.common.pojo.RecordInfo;
import com.tencent.supersonic.headless.api.model.enums.ModelSourceTypeEnum;
import com.tencent.supersonic.headless.api.materialization.enums.UpdateCycleEnum;
import com.tencent.supersonic.headless.common.model.enums.ModelSourceTypeEnum;
import com.tencent.supersonic.headless.common.materialization.enums.UpdateCycleEnum;
import lombok.Data;
import java.util.List;

View File

@@ -1,8 +1,8 @@
package com.tencent.supersonic.headless.api.materialization.response;
package com.tencent.supersonic.headless.common.materialization.response;
import com.tencent.supersonic.headless.api.model.enums.ModelSourceTypeEnum;
import com.tencent.supersonic.headless.api.model.response.DatabaseResp;
import com.tencent.supersonic.headless.api.materialization.enums.UpdateCycleEnum;
import com.tencent.supersonic.headless.common.model.enums.ModelSourceTypeEnum;
import com.tencent.supersonic.headless.common.model.response.DatabaseResp;
import com.tencent.supersonic.headless.common.materialization.enums.UpdateCycleEnum;
import java.util.List;
import java.util.Map;
import lombok.AllArgsConstructor;

View File

@@ -1,4 +1,4 @@
package com.tencent.supersonic.headless.api.model.enums;
package com.tencent.supersonic.headless.common.model.enums;
public enum AppStatusEnum {

View File

@@ -1,4 +1,4 @@
package com.tencent.supersonic.headless.api.model.enums;
package com.tencent.supersonic.headless.common.model.enums;
import com.tencent.supersonic.common.pojo.Constants;

View File

@@ -1,4 +1,4 @@
package com.tencent.supersonic.headless.api.model.enums;
package com.tencent.supersonic.headless.common.model.enums;
public enum DimensionTypeEnum {

View File

@@ -1,4 +1,4 @@
package com.tencent.supersonic.headless.api.model.enums;
package com.tencent.supersonic.headless.common.model.enums;
public enum IdentifyTypeEnum {

View File

@@ -0,0 +1,9 @@
package com.tencent.supersonic.headless.common.model.enums;
public enum MetricTypeEnum {
ATOMIC,
DERIVED
}

View File

@@ -1,4 +1,4 @@
package com.tencent.supersonic.headless.api.model.enums;
package com.tencent.supersonic.headless.common.model.enums;
import java.util.Objects;

View File

@@ -1,4 +1,4 @@
package com.tencent.supersonic.headless.api.model.enums;
package com.tencent.supersonic.headless.common.model.enums;
public enum OperatorEnum {

View File

@@ -1,4 +1,4 @@
package com.tencent.supersonic.headless.api.model.enums;
package com.tencent.supersonic.headless.common.model.enums;
public enum QueryOptMode {

View File

@@ -1,4 +1,4 @@
package com.tencent.supersonic.headless.api.model.enums;
package com.tencent.supersonic.headless.common.model.enums;
public enum QueryTypeBackEnum {

View File

@@ -1,4 +1,4 @@
package com.tencent.supersonic.headless.api.model.enums;
package com.tencent.supersonic.headless.common.model.enums;
public enum QueryTypeEnum {

View File

@@ -1,4 +1,4 @@
package com.tencent.supersonic.headless.api.model.enums;
package com.tencent.supersonic.headless.common.model.enums;
public enum SemanticTypeEnum {

View File

@@ -0,0 +1,24 @@
package com.tencent.supersonic.headless.common.model.pojo;
import com.google.common.collect.Lists;
import lombok.Data;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
@Data
public class AppConfig {
private List<Item> items = Lists.newArrayList();
public Set<Item> getAllItems() {
Set<Item> itemSet = new HashSet<>();
for (Item item : items) {
itemSet.add(item);
itemSet.addAll(item.getRelateItems());
}
return itemSet;
}
}

View File

@@ -1,4 +1,4 @@
package com.tencent.supersonic.headless.api.model.pojo;
package com.tencent.supersonic.headless.common.model.pojo;
import com.tencent.supersonic.common.pojo.Constants;
import java.util.List;

View File

@@ -1,4 +1,4 @@
package com.tencent.supersonic.headless.api.model.pojo;
package com.tencent.supersonic.headless.common.model.pojo;
import com.tencent.supersonic.common.pojo.Constants;
import lombok.AllArgsConstructor;
@@ -63,4 +63,8 @@ public class Dim {
);
}
public String getFieldName() {
return bizName;
}
}

View File

@@ -1,4 +1,4 @@
package com.tencent.supersonic.headless.api.model.pojo;
package com.tencent.supersonic.headless.common.model.pojo;
import lombok.Data;

View File

@@ -1,4 +1,4 @@
package com.tencent.supersonic.headless.api.model.pojo;
package com.tencent.supersonic.headless.common.model.pojo;
import lombok.AllArgsConstructor;
import lombok.Data;

View File

@@ -1,4 +1,4 @@
package com.tencent.supersonic.headless.api.model.pojo;
package com.tencent.supersonic.headless.common.model.pojo;
import lombok.AllArgsConstructor;
import lombok.Data;

View File

@@ -1,4 +1,4 @@
package com.tencent.supersonic.headless.api.model.pojo;
package com.tencent.supersonic.headless.common.model.pojo;
import lombok.AllArgsConstructor;
import lombok.Data;

View File

@@ -1,4 +1,4 @@
package com.tencent.supersonic.headless.api.model.pojo;
package com.tencent.supersonic.headless.common.model.pojo;
import lombok.AllArgsConstructor;
import lombok.Data;
@@ -27,4 +27,9 @@ public class Identify {
this.type = type;
this.bizName = bizName;
}
public String getFieldName() {
return bizName;
}
}

View File

@@ -1,4 +1,4 @@
package com.tencent.supersonic.headless.api.model.pojo;
package com.tencent.supersonic.headless.common.model.pojo;
import com.google.common.collect.Lists;
import com.tencent.supersonic.common.pojo.enums.ApiItemType;

View File

@@ -1,4 +1,4 @@
package com.tencent.supersonic.headless.api.model.pojo;
package com.tencent.supersonic.headless.common.model.pojo;
import java.util.List;
import lombok.AllArgsConstructor;

View File

@@ -1,4 +1,4 @@
package com.tencent.supersonic.headless.api.model.pojo;
package com.tencent.supersonic.headless.common.model.pojo;
import lombok.AllArgsConstructor;
import lombok.Data;
@@ -9,17 +9,12 @@ import lombok.NoArgsConstructor;
@NoArgsConstructor
public class Measure {
private String name;
private String agg;
private String expr;
private String constraint;
private String alias;
private String createMetric;
private String bizName;
@@ -33,4 +28,8 @@ public class Measure {
this.bizName = bizName;
}
public String getFieldName() {
return expr;
}
}

View File

@@ -1,4 +1,4 @@
package com.tencent.supersonic.headless.api.model.pojo;
package com.tencent.supersonic.headless.common.model.pojo;
import com.tencent.supersonic.common.pojo.RecordInfo;
import lombok.Data;

View File

@@ -1,4 +1,4 @@
package com.tencent.supersonic.headless.api.model.pojo;
package com.tencent.supersonic.headless.common.model.pojo;
import java.util.List;
import com.google.common.collect.Lists;

View File

@@ -1,7 +1,7 @@
package com.tencent.supersonic.headless.api.model.pojo;
package com.tencent.supersonic.headless.common.model.pojo;
import com.google.common.collect.Lists;
import com.tencent.supersonic.headless.api.model.enums.DimensionTypeEnum;
import com.tencent.supersonic.headless.common.model.enums.DimensionTypeEnum;
import lombok.Data;
import org.apache.commons.lang3.StringUtils;
import org.springframework.util.CollectionUtils;

View File

@@ -1,4 +1,4 @@
package com.tencent.supersonic.headless.api.model.pojo;
package com.tencent.supersonic.headless.common.model.pojo;
import java.io.Serializable;
import java.util.ArrayList;

View File

@@ -1,4 +1,4 @@
package com.tencent.supersonic.headless.api.model.pojo;
package com.tencent.supersonic.headless.common.model.pojo;
import com.alibaba.fastjson.JSONObject;
import com.google.common.collect.Lists;

View File

@@ -1,4 +1,4 @@
package com.tencent.supersonic.headless.api.model.pojo;
package com.tencent.supersonic.headless.common.model.pojo;
import com.google.common.collect.Lists;
import lombok.AllArgsConstructor;

View File

@@ -1,4 +1,4 @@
package com.tencent.supersonic.headless.api.model.pojo;
package com.tencent.supersonic.headless.common.model.pojo;
import com.google.common.base.Objects;
import com.tencent.supersonic.common.pojo.RecordInfo;

View File

@@ -1,9 +1,9 @@
package com.tencent.supersonic.headless.api.model.request;
package com.tencent.supersonic.headless.common.model.request;
import com.google.common.collect.Lists;
import com.tencent.supersonic.common.pojo.PageBaseReq;
import com.tencent.supersonic.headless.api.model.enums.AppStatusEnum;
import com.tencent.supersonic.headless.common.model.enums.AppStatusEnum;
import lombok.Data;
import org.springframework.util.CollectionUtils;

View File

@@ -1,7 +1,7 @@
package com.tencent.supersonic.headless.api.model.request;
package com.tencent.supersonic.headless.common.model.request;
import com.tencent.supersonic.common.pojo.RecordInfo;
import com.tencent.supersonic.headless.api.model.pojo.AppConfig;
import com.tencent.supersonic.headless.common.model.pojo.AppConfig;
import lombok.Data;
import org.springframework.util.CollectionUtils;

View File

@@ -1,7 +1,7 @@
package com.tencent.supersonic.headless.api.model.request;
package com.tencent.supersonic.headless.common.model.request;
import com.google.common.collect.Lists;
import com.tencent.supersonic.headless.api.model.enums.DataTypeEnum;
import com.tencent.supersonic.headless.common.model.enums.DataTypeEnum;
import lombok.Data;
import org.apache.commons.lang3.StringUtils;
import java.util.List;

View File

@@ -1,4 +1,4 @@
package com.tencent.supersonic.headless.api.model.request;
package com.tencent.supersonic.headless.common.model.request;
import java.util.ArrayList;
import java.util.List;

View File

@@ -1,8 +1,8 @@
package com.tencent.supersonic.headless.api.model.request;
package com.tencent.supersonic.headless.common.model.request;
import com.tencent.supersonic.common.pojo.enums.DataTypeEnums;
import com.tencent.supersonic.headless.api.model.pojo.DimValueMap;
import com.tencent.supersonic.headless.api.model.pojo.SchemaItem;
import com.tencent.supersonic.headless.common.model.pojo.DimValueMap;
import com.tencent.supersonic.headless.common.model.pojo.SchemaItem;
import lombok.Data;
import javax.validation.constraints.NotNull;

View File

@@ -1,7 +1,7 @@
package com.tencent.supersonic.headless.api.model.request;
package com.tencent.supersonic.headless.common.model.request;
import com.tencent.supersonic.headless.api.model.pojo.SchemaItem;
import com.tencent.supersonic.headless.common.model.pojo.SchemaItem;
import lombok.Data;
import java.util.ArrayList;

View File

@@ -1,4 +1,4 @@
package com.tencent.supersonic.headless.api.model.request;
package com.tencent.supersonic.headless.common.model.request;
import lombok.Data;

View File

@@ -1,4 +1,4 @@
package com.tencent.supersonic.headless.api.model.request;
package com.tencent.supersonic.headless.common.model.request;
import lombok.Data;
import java.util.List;

View File

@@ -1,8 +1,8 @@
package com.tencent.supersonic.headless.api.model.request;
package com.tencent.supersonic.headless.common.model.request;
import com.tencent.supersonic.common.pojo.DataFormat;
import com.tencent.supersonic.headless.api.model.pojo.RelateDimension;
import com.tencent.supersonic.headless.api.model.pojo.SchemaItem;
import com.tencent.supersonic.headless.common.model.pojo.RelateDimension;
import com.tencent.supersonic.headless.common.model.pojo.SchemaItem;
import lombok.Data;
import org.apache.commons.lang3.StringUtils;
import org.springframework.util.CollectionUtils;

View File

@@ -1,9 +1,9 @@
package com.tencent.supersonic.headless.api.model.request;
package com.tencent.supersonic.headless.common.model.request;
import com.tencent.supersonic.headless.api.model.enums.MetricTypeEnum;
import com.tencent.supersonic.headless.api.model.pojo.Measure;
import com.tencent.supersonic.headless.api.model.pojo.MetricTypeParams;
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 lombok.Data;
import java.util.List;

View File

@@ -1,11 +1,11 @@
package com.tencent.supersonic.headless.api.model.request;
package com.tencent.supersonic.headless.common.model.request;
import com.google.common.collect.Lists;
import com.tencent.supersonic.headless.api.model.pojo.Dim;
import com.tencent.supersonic.headless.api.model.pojo.DrillDownDimension;
import com.tencent.supersonic.headless.api.model.pojo.ModelDetail;
import com.tencent.supersonic.headless.api.model.pojo.SchemaItem;
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 lombok.Data;
import java.util.List;

Some files were not shown because too many files have changed in this diff Show More