package com.sohu.cache.dao;

import com.sohu.cache.entity.AppClientCostTimeTotalStat;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 基于应用全局耗时统计(uniquekey: app_id, command, collect_time)
 * @author leifu
 * @Date 2015年6月26日
 * @Time 下午4:24:24
 */
public interface AppClientCostTimeTotalStatDao {

    /**
     * 保存基于应用的耗时统计
     * @param appClientCostTimeTotalStat
     */
    void save(AppClientCostTimeTotalStat appClientCostTimeTotalStat);

    /**
     * 获取应用指定时间内调用过的命令
     * @param appId
     * @param startTime
     * @param endTime
     * @return
     */
    List<String> getAppDistinctCommand(@Param("appId") Long appId, @Param("startTime") long startTime,
                                       @Param("endTime") long endTime);

    /**
     * 获取应用指定时间内某个命令的耗时统计
     * @param appId
     * @param command
     * @param startTime
     * @param endTime
     * @return
     */
    List<AppClientCostTimeTotalStat> getAppClientCommandStat(@Param("appId") Long appId,
                                                             @Param("command") String command, @Param("startTime") long startTime, @Param("endTime") long endTime);

    /**
     * 批量保存
     * @param appClientCostTimeTotalStatList
     */
    void batchSave(List<AppClientCostTimeTotalStat> appClientCostTimeTotalStatList);
}
