package io.delphiplatform.api.v3.rdb.repository;

import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Query;

import java.util.List;

import io.delphiplatform.api.v3.model.datahealth.DataHealthChartPosition;
import io.delphiplatform.api.v3.rdb.entity.video.FactYoutubeVideoTrendingChartEntity;
import io.delphiplatform.api.v3.rdb.entity.video.FactYoutubeVideoTrendingChartId;

public interface FactTrendingVideoChartDailyRepository extends
    JpaRepository<FactYoutubeVideoTrendingChartEntity, FactYoutubeVideoTrendingChartId>,
    JpaSpecificationExecutor<FactYoutubeVideoTrendingChartEntity> {

    @Query("SELECT new io.delphiplatform.api.v3.model.datahealth.DataHealthChartPosition("
        + " videoTrendingChart.chart.chartGroup, "
        + " videoTrendingChart.chart.dsp.dspId, "
        + " MIN(videoTrendingChart.date), "
        + " MAX(videoTrendingChart.date)"
        + ") "
        + " FROM FactYoutubeVideoTrendingChartEntity videoTrendingChart "
        + " GROUP BY videoTrendingChart.chart.dsp.dspId, videoTrendingChart.chart.chartGroup ")
    List<DataHealthChartPosition> getMinMaxDates();
}
