package io.delphiplatform.api.v3.rdb.entity.spotify;

import org.springframework.beans.factory.annotation.Value;

import java.time.LocalDate;

public interface SpotifyJunoTopStreamsDailyEntityAggregatedProjection {

    @Value("#{target.isrc}")
    String getIsrc();

    @Value("#{target.country_code}")
    String[] getCountryCode();

    @Value("#{target.isrc_country_code}")
    String getIsrcCountryCode();

    @Value("#{target.streams_1_7_days_total}")
    Long getStreams17DaysTotal();

    @Value("#{target.streams_8_14_days_total}")
    Long getStreams814DaysTotal();

    @Value("#{target.streams_1_7_days_lean_back}")
    Long getStreams17DaysLeanBack();

    @Value("#{target.streams_8_14_days_lean_back}")
    Long getStreams814DaysLeanBack();

    @Value("#{target.streams_1_7_days_lean_forward}")
    Long getStreams17DaysLeanForward();

    @Value("#{target.streams_8_14_days_lean_forward}")
    Long getStreams814DaysLeanForward();

    @Value("#{target.streams_1_7_days_male}")
    Long getStreams17DaysMale();

    @Value("#{target.streams_8_14_days_male}")
    Long getStreams814DaysMale();

    @Value("#{target.streams_1_7_days_female}")
    Long getStreams17DaysFemale();

    @Value("#{target.streams_8_14_days_female}")
    Long getStreams814DaysFemale();

    @Value("#{target.streams_change_7_to_14_days}")
    Long getStreamsChange7To14Days();

    @Value("#{target.streams_change_7_to_14_days_lean_back}")
    Long getStreamsChange7To14DaysLeanBack();

    @Value("#{target.streams_change_7_to_14_days_lean_forward}")
    Long getStreamsChange7To14DaysLeanForward();

    @Value("#{target.streams_change_percent_7_to_14_days}")
    Double getStreamsChangePercent7To14Days();

    @Value("#{target.streams_change_percent_7_to_14_days_lean_back}")
    Long getStreamsChangePercent7To14DaysLeanBack();

    @Value("#{target.streams_change_percent_7_to_14_days_lean_forward}")
    Long getStreamsChangePercent7To14DaysLeanForward();

    @Value("#{target.latest_entry_date}")
    LocalDate getLatestEntryDate();

    @Value("#{target.product_sale_date}")
    LocalDate getProductSaleDate();
}
