package com.its.op.dao.mapper.its.atrd;

import com.its.op.dto.its.atrd.AtrdRltnIdDto;
import com.its.op.dto.its.atrd.AtrdTrafficStatDto;
import com.its.op.dto.its.statistics.TrafficHourParam;
import com.its.op.dto.its.statistics.TrafficSpecParam;
import com.its.op.dto.its.statistics.TrafficTermParam;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

@Mapper
public interface AtrdTrafficStatisticsMapper {

    List<AtrdRltnIdDto> findAtrdRltnLinkAll(@Param("ATRD_ID") String ATRD_ID);
    List<AtrdRltnIdDto> findAtrdRltnIfscAll(@Param("ATRD_ID") String ATRD_ID);
    List<AtrdRltnIdDto> findAtrdRltnRoadAll(@Param("ATRD_ID") String ATRD_ID);

    // 기간 검색 - 15분, 시간, 일, 월, 년(링크, 서비스링크, 도로)
    List<AtrdTrafficStatDto> findAllLinkStatByIdTerm(@Param("cond") TrafficTermParam cond);
    List<AtrdTrafficStatDto> findAllIfscStatByIdTerm(@Param("cond") TrafficTermParam cond);
    List<AtrdTrafficStatDto> findAllRoadStatByIdTerm(@Param("cond") TrafficTermParam cond);

    List<AtrdTrafficStatDto> findAllLinkStatByAtrdIdTerm(@Param("cond") TrafficTermParam cond);
    List<AtrdTrafficStatDto> findAllIfscStatByAtrdIdTerm(@Param("cond") TrafficTermParam cond);
    List<AtrdTrafficStatDto> findAllRoadStatByAtrdIdTerm(@Param("cond") TrafficTermParam cond);

    // 시간대 검색 - 15분, 시간(링크, 서비스링크, 도로)
    List<AtrdTrafficStatDto> findAllLinkStatByIdHour(@Param("cond") TrafficHourParam cond);
    List<AtrdTrafficStatDto> findAllIfscStatByIdHour(@Param("cond") TrafficHourParam cond);
    List<AtrdTrafficStatDto> findAllRoadStatByIdHour(@Param("cond") TrafficHourParam cond);

    List<AtrdTrafficStatDto> findAllLinkStatByAtrdIdHour(@Param("cond") TrafficHourParam cond);
    List<AtrdTrafficStatDto> findAllIfscStatByAtrdIdHour(@Param("cond") TrafficHourParam cond);
    List<AtrdTrafficStatDto> findAllRoadStatByAtrdIdHour(@Param("cond") TrafficHourParam cond);

    // 지정시각 거색 - 15분, 시간(링크, 서비스링크, 도로)
    List<AtrdTrafficStatDto> findAllLinkStatByIdSpec(@Param("cond") TrafficSpecParam cond);
    List<AtrdTrafficStatDto> findAllIfscStatByIdSpec(@Param("cond") TrafficSpecParam cond);
    List<AtrdTrafficStatDto> findAllRoadStatByIdSpec(@Param("cond") TrafficSpecParam cond);

    List<AtrdTrafficStatDto> findAllLinkStatByAtrdIdSpec(@Param("cond") TrafficSpecParam cond);
    List<AtrdTrafficStatDto> findAllIfscStatByAtrdIdSpec(@Param("cond") TrafficSpecParam cond);
    List<AtrdTrafficStatDto> findAllRoadStatByAtrdIdSpec(@Param("cond") TrafficSpecParam cond);
}
