package com.dne.ems.repository;

import java.time.LocalDateTime;
import java.util.List;

import com.dne.ems.dto.AqiDistributionDTO;
import com.dne.ems.dto.AqiHeatmapPointDTO;
import com.dne.ems.model.AqiRecord;

public interface AqiRecordRepository {

    AqiRecord save(AqiRecord record);
    
    List<AqiRecord> saveAll(Iterable<AqiRecord> records);

    void deleteAll();

    long count();

    List<AqiDistributionDTO> getAqiDistribution();

    List<AqiRecord> findExceedanceRecordsSince(LocalDateTime startDate);

    List<AqiRecord> findExceedanceRecordsWithThresholds(
            LocalDateTime startDate,
            Double aqiThreshold,
            Double pm25Threshold,
            Double o3Threshold,
            Double no2Threshold,
            Double so2Threshold);

    List<AqiRecord> findByRecordTimeAfter(LocalDateTime startDate);

    List<AqiHeatmapPointDTO> getAqiHeatmapData();

    List<Object[]> getAqiHeatmapDataRaw();
    
    List<AqiRecord> findAll();
}