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

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import java.util.ArrayList;
import java.util.List;

import io.delphiplatform.api.v3.model.datahealth.DataHealthChartPosition;
import io.delphiplatform.api.v3.rdb.repository.FactShazamChartRepository;
import io.delphiplatform.api.v3.rdb.repository.FactTrendingVideoChartDailyRepository;
import io.delphiplatform.api.v3.view.util.Params;

@Service
@Transactional(readOnly = true)
public class DataHealthChartPositionService {

    private final FactTrendingVideoChartDailyRepository factTrendingVideoChartDailyRepository;
    private final FactShazamChartRepository factShazamChartRepository;

    @Autowired
    public DataHealthChartPositionService(
        FactTrendingVideoChartDailyRepository factTrendingVideoChartDailyRepository,
        FactShazamChartRepository factShazamChartRepository) {
        this.factTrendingVideoChartDailyRepository = factTrendingVideoChartDailyRepository;
        this.factShazamChartRepository = factShazamChartRepository;
    }

    @Transactional(readOnly = true)
    public List<DataHealthChartPosition> getDataHealthChartPositions(Params params) {
        List<DataHealthChartPosition> chartPositionList = new ArrayList<>();
        chartPositionList.addAll(factTrendingVideoChartDailyRepository.getMinMaxDates());
        chartPositionList.add(factShazamChartRepository.getMinMaxDates());
        // future DSP support here
        return chartPositionList;
    }

}
