mirror of
https://github.com/tencentmusic/supersonic.git
synced 2025-12-12 12:37:55 +00:00
[improvement][launcher]Refactor unit tests and demo data.
[improvement][launcher]Refactor unit tests and demo data. [improvement][launcher]Refactor unit tests and demo data. [improvement][launcher]Refactor unit tests and demo data.
This commit is contained in:
@@ -1,10 +1,15 @@
|
||||
package com.tencent.supersonic.headless.server.persistence.dataobject;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
@TableName("s2_available_date_info")
|
||||
public class DateInfoDO {
|
||||
|
||||
@TableId(type = IdType.AUTO)
|
||||
private Long id;
|
||||
private String type;
|
||||
private Long itemId;
|
||||
|
||||
@@ -0,0 +1,52 @@
|
||||
package com.tencent.supersonic.headless.server.persistence.dataobject;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
@TableName("s2_query_stat_info")
|
||||
public class QueryStatDO {
|
||||
|
||||
@TableId(type = IdType.AUTO)
|
||||
private Long id;
|
||||
private String traceId;
|
||||
private Long modelId;
|
||||
private Long dataSetId;
|
||||
@TableField("query_user")
|
||||
private String user;
|
||||
private String createdAt;
|
||||
/** corresponding type, such as sql, struct, etc */
|
||||
private String queryType;
|
||||
/** NORMAL, PRE_FLUSH */
|
||||
private Integer queryTypeBack;
|
||||
private String querySqlCmd;
|
||||
@TableField("sql_cmd_md5")
|
||||
private String querySqlCmdMd5;
|
||||
private String queryStructCmd;
|
||||
@TableField("struct_cmd_md5")
|
||||
private String queryStructCmdMd5;
|
||||
private String sql;
|
||||
private String sqlMd5;
|
||||
private String queryEngine;
|
||||
// private Long startTime;
|
||||
private Long elapsedMs;
|
||||
private String queryState;
|
||||
private Boolean nativeQuery;
|
||||
private String startDate;
|
||||
private String endDate;
|
||||
private String dimensions;
|
||||
private String metrics;
|
||||
private String selectCols;
|
||||
private String aggCols;
|
||||
private String filterCols;
|
||||
private String groupByCols;
|
||||
private String orderByCols;
|
||||
private Boolean useResultCache;
|
||||
private Boolean useSqlCache;
|
||||
private String sqlCacheKey;
|
||||
private String resultCacheKey;
|
||||
private String queryOptMode;
|
||||
}
|
||||
@@ -1,5 +1,6 @@
|
||||
package com.tencent.supersonic.headless.server.persistence.mapper;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.tencent.supersonic.headless.api.pojo.ItemDateFilter;
|
||||
import com.tencent.supersonic.headless.server.persistence.dataobject.DateInfoDO;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
@@ -7,9 +8,7 @@ import org.apache.ibatis.annotations.Mapper;
|
||||
import java.util.List;
|
||||
|
||||
@Mapper
|
||||
public interface DateInfoMapper {
|
||||
|
||||
Boolean upsertDateInfo(DateInfoDO dateInfoDO);
|
||||
public interface DateInfoMapper extends BaseMapper<DateInfoDO> {
|
||||
|
||||
List<DateInfoDO> getDateInfos(ItemDateFilter itemDateFilter);
|
||||
}
|
||||
|
||||
@@ -1,15 +1,15 @@
|
||||
package com.tencent.supersonic.headless.server.persistence.mapper;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.tencent.supersonic.headless.api.pojo.QueryStat;
|
||||
import com.tencent.supersonic.headless.api.pojo.request.ItemUseReq;
|
||||
import com.tencent.supersonic.headless.server.persistence.dataobject.QueryStatDO;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@Mapper
|
||||
public interface StatMapper {
|
||||
|
||||
Boolean createRecord(QueryStat queryStatInfo);
|
||||
public interface StatMapper extends BaseMapper<QueryStatDO> {
|
||||
|
||||
List<QueryStat> getStatInfo(ItemUseReq itemUseCommend);
|
||||
}
|
||||
|
||||
@@ -12,5 +12,4 @@ public interface StatRepository {
|
||||
|
||||
List<ItemUseResp> getStatInfo(ItemUseReq itemUseCommend);
|
||||
|
||||
List<QueryStat> getQueryStatInfoWithoutCache(ItemUseReq itemUseCommend);
|
||||
}
|
||||
|
||||
@@ -66,7 +66,7 @@ public class DateInfoRepositoryImpl implements DateInfoRepository {
|
||||
private Integer batchUpsert(List<DateInfoDO> dateInfoDOList) {
|
||||
Stopwatch stopwatch = Stopwatch.createStarted();
|
||||
for (DateInfoDO dateInfoDO : dateInfoDOList) {
|
||||
dateInfoMapper.upsertDateInfo(dateInfoDO);
|
||||
dateInfoMapper.insertOrUpdate(dateInfoDO);
|
||||
}
|
||||
log.info("before final, elapsed time:{}", stopwatch.elapsed(TimeUnit.MILLISECONDS));
|
||||
return 0;
|
||||
|
||||
@@ -6,11 +6,13 @@ import com.tencent.supersonic.common.pojo.enums.TypeEnums;
|
||||
import com.tencent.supersonic.headless.api.pojo.QueryStat;
|
||||
import com.tencent.supersonic.headless.api.pojo.request.ItemUseReq;
|
||||
import com.tencent.supersonic.headless.api.pojo.response.ItemUseResp;
|
||||
import com.tencent.supersonic.headless.server.persistence.dataobject.QueryStatDO;
|
||||
import com.tencent.supersonic.headless.server.persistence.mapper.StatMapper;
|
||||
import com.tencent.supersonic.headless.server.persistence.repository.StatRepository;
|
||||
import lombok.SneakyThrows;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.beans.BeanUtils;
|
||||
import org.springframework.stereotype.Repository;
|
||||
|
||||
import java.util.ArrayList;
|
||||
@@ -36,7 +38,9 @@ public class StatRepositoryImpl implements StatRepository {
|
||||
|
||||
@Override
|
||||
public Boolean createRecord(QueryStat queryStatInfo) {
|
||||
return statMapper.createRecord(queryStatInfo);
|
||||
QueryStatDO queryStatDO = new QueryStatDO();
|
||||
BeanUtils.copyProperties(queryStatInfo, queryStatDO);
|
||||
return statMapper.insertOrUpdate(queryStatDO);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -66,11 +70,6 @@ public class StatRepositoryImpl implements StatRepository {
|
||||
.collect(Collectors.toList());
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<QueryStat> getQueryStatInfoWithoutCache(ItemUseReq itemUseCommend) {
|
||||
return statMapper.getStatInfo(itemUseCommend);
|
||||
}
|
||||
|
||||
private void updateStatMapInfo(Map<String, Long> map, String dimensions, String type,
|
||||
Long dataSetId) {
|
||||
if (StringUtils.isNotEmpty(dimensions)) {
|
||||
@@ -92,14 +91,4 @@ public class StatRepositoryImpl implements StatRepository {
|
||||
}
|
||||
}
|
||||
|
||||
private void updateStatMapInfo(Map<String, Long> map, Long modelId, String type) {
|
||||
if (Objects.nonNull(modelId)) {
|
||||
String key = type + AT_SYMBOL + AT_SYMBOL + modelId;
|
||||
if (map.containsKey(key)) {
|
||||
map.put(key, map.get(key) + 1);
|
||||
} else {
|
||||
map.put(key, 1L);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -40,21 +40,6 @@
|
||||
<result column="query_opt_mode" property="queryOptMode"/>
|
||||
</resultMap>
|
||||
|
||||
<insert id="createRecord">
|
||||
insert into s2_query_stat_info
|
||||
(
|
||||
trace_id, model_id, data_set_id, `user`, query_type, query_type_back, query_sql_cmd, sql_cmd_md5, query_struct_cmd, struct_cmd_md5, `sql`, sql_md5, query_engine,
|
||||
elapsed_ms, query_state, native_query, start_date, end_date, dimensions, metrics, select_cols, agg_cols, filter_cols, group_by_cols,
|
||||
order_by_cols, use_result_cache, use_sql_cache, sql_cache_key, result_cache_key, query_opt_mode
|
||||
)
|
||||
values
|
||||
(
|
||||
#{traceId}, #{modelId}, #{dataSetId}, #{user}, #{queryType}, #{queryTypeBack}, #{querySqlCmd}, #{querySqlCmdMd5}, #{queryStructCmd}, #{queryStructCmdMd5}, #{sql}, #{sqlMd5}, #{queryEngine},
|
||||
#{elapsedMs}, #{queryState}, #{nativeQuery}, #{startDate}, #{endDate}, #{dimensions}, #{metrics}, #{selectCols}, #{aggCols}, #{filterCols}, #{groupByCols},
|
||||
#{orderByCols}, #{useResultCache}, #{useSqlCache}, #{sqlCacheKey}, #{resultCacheKey}, #{queryOptMode}
|
||||
)
|
||||
</insert>
|
||||
|
||||
<select id="getStatInfo"
|
||||
resultType="com.tencent.supersonic.headless.api.pojo.QueryStat">
|
||||
select *
|
||||
|
||||
@@ -17,22 +17,6 @@
|
||||
<result column="date_period" jdbcType="VARCHAR" property="datePeriod"/>
|
||||
</resultMap>
|
||||
|
||||
<insert id="upsertDateInfo">
|
||||
insert into s2_available_date_info
|
||||
(`type`, item_id, date_format, start_date, end_date, unavailable_date, created_by,
|
||||
updated_by,date_period)
|
||||
values (#{type}, #{itemId}, #{dateFormat}, #{startDate}, #{endDate}, #{unavailableDateList},
|
||||
#{createdBy}, #{updatedBy}, #{datePeriod}) ON DUPLICATE KEY
|
||||
UPDATE
|
||||
date_format = #{dateFormat},
|
||||
start_date = #{startDate},
|
||||
end_date = #{endDate},
|
||||
unavailable_date = #{unavailableDateList},
|
||||
created_by = #{createdBy},
|
||||
updated_by = #{updatedBy},
|
||||
date_period = #{datePeriod}
|
||||
</insert>
|
||||
|
||||
<select id="getDateInfos" resultMap="BaseResultMap">
|
||||
select e.*
|
||||
from s2_available_date_info e
|
||||
|
||||
Reference in New Issue
Block a user