package io.delphiplatform.api.integration.model;

import com.fasterxml.jackson.annotation.JsonProperty;

import java.time.LocalDate;

import io.delphiplatform.api.v3.model.AppleAgeBand;
import io.delphiplatform.api.v3.model.Gender;
import io.delphiplatform.api.v3.model.SpotifyAgeBand;
import io.delphiplatform.api.v3.model.amazon.AmazonStreamsInfo;
import io.delphiplatform.api.v3.model.apple.AppleStreamsInfo;
import io.delphiplatform.api.v3.model.spotify.SpotifyStreamsInfo;
import lombok.EqualsAndHashCode;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.ToString;

@Getter
@Setter
@NoArgsConstructor
@EqualsAndHashCode
@ToString
public class StreamModelModel {

    @JsonProperty("artist_id")
    private String artistId;

    @JsonProperty("country_code")
    private String countryCode;

    @JsonProperty("date")
    private LocalDate date;

    @JsonProperty("dsp")
    public String dsp;

    @JsonProperty("isrc")
    private String isrc;

    @JsonProperty("playlist_id")
    private String playlistId;

    @JsonProperty("streams")
    private Long streams;

    @JsonProperty("track_id")
    private String trackId;

    @JsonProperty("project_number")
    private String projectNumber;

    @JsonProperty("product_family_id")
    private String productFamilyId;

    @JsonProperty("genders")
    private Gender genders;

    @JsonProperty("apple_age_bands")
    private AppleAgeBand appleAgeBands;

    @JsonProperty("spotify_age_bands")
    private SpotifyAgeBand spotifyAgeBands;

    @JsonProperty("amazon_streams_info")
    private AmazonStreamsInfo amazonStreamsInfo;

    @JsonProperty("spotify_streams_info")
    private SpotifyStreamsInfo spotifyStreamsInfo;

    @JsonProperty("apple_streams_info")
    private AppleStreamsInfo appleStreamsInfo;

}
