package com.linkedin.thirdeye.datalayer.bao;
import com.linkedin.thirdeye.datalayer.pojo.MergedAnomalyResultBean;
import java.util.List;
import com.linkedin.thirdeye.datalayer.dto.MergedAnomalyResultDTO;
public interface MergedAnomalyResultManager extends AbstractManager<MergedAnomalyResultDTO> {
MergedAnomalyResultDTO findById(Long id, boolean loadRawAnomalies);
List<MergedAnomalyResultDTO> getAllByTimeEmailIdAndNotifiedFalse(long startTime, long endTime,
long emailId);
List<MergedAnomalyResultDTO> findAllConflictByFunctionId(long functionId, long conflictWindowStart, long conflictWindowEnd);
List<MergedAnomalyResultDTO> findAllConflictByFunctionIdDimensions(long functionId, long conflictWindowStart, long conflictWindowEnd, String dimensions);
List<MergedAnomalyResultDTO> findByCollectionMetricDimensionsTime(String collection,
String metric, String dimensions, long startTime, long endTime, boolean loadRawAnomalies);
List<MergedAnomalyResultDTO> findByCollectionMetricTime(String collection, String metric, long startTime, long endTime, boolean loadRawAnomalies);
List<MergedAnomalyResultDTO> findByMetricTime(String metric, long startTime, long endTime, boolean loadRawAnomalies);
// TODO : add findByMetricId - currently we are not updating metricId in table.
List<MergedAnomalyResultDTO> findByCollectionTime(String collection, long startTime,
long endTime, boolean loadRawAnomalies);
MergedAnomalyResultDTO findLatestConflictByFunctionIdDimensions(Long functionId, String dimensions,
long conflictWindowStart, long conflictWindowEnd);
MergedAnomalyResultDTO findLatestByFunctionIdOnly(Long functionId);
List<MergedAnomalyResultDTO> findByFunctionId(Long functionId);
List<MergedAnomalyResultDTO> findUnNotifiedByFunctionIdAndIdGreaterThan(Long functionId, Long anomalyId);
List<MergedAnomalyResultDTO> findByStartTimeInRangeAndFunctionId(long startTime, long endTime,
long functionId);
List<MergedAnomalyResultDTO> findByTime(long startTime, long endTime);
List<MergedAnomalyResultDTO> findUnNotifiedByFunctionIdAndIdLesserThanAndEndTimeGreaterThanLastOneDay(long functionId, long anomalyId);
void updateAnomalyFeedback(MergedAnomalyResultDTO entity);
MergedAnomalyResultBean convertMergeAnomalyDTO2Bean(MergedAnomalyResultDTO entity);
MergedAnomalyResultDTO convertMergedAnomalyBean2DTO(MergedAnomalyResultBean mergedAnomalyResultBean,
boolean loadRawAnomalies);
List<MergedAnomalyResultDTO> convertMergedAnomalyBean2DTO(
List<MergedAnomalyResultBean> mergedAnomalyResultBeanList, boolean loadRawAnomalies);
}