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

import java.time.LocalDate;

import io.delphiplatform.api.v3.rdb.entity.apple.music.AppleMusicChartTrackEntity;
import io.delphiplatform.api.v3.rdb.entity.spotify.SpotifyChartTrackEntity;
import lombok.AllArgsConstructor;
import lombok.EqualsAndHashCode;
import lombok.Getter;
import lombok.ToString;

@Getter
@AllArgsConstructor
@EqualsAndHashCode
@ToString
public class ChartIdDateIsrcKey {

    private String chartId;
    private LocalDate chartDate;
    private String isrc;

    public static ChartIdDateIsrcKey of(SpotifyChartTrackEntity spotifyChartTrackEntity) {
        return new ChartIdDateIsrcKey(
            spotifyChartTrackEntity.getSpotifyChartId(),
            spotifyChartTrackEntity.getChartDate(),
            spotifyChartTrackEntity.getIsrc()
        );
    }

    public static ChartIdDateIsrcKey of(AppleMusicChartTrackEntity appleMusicChartTrackEntity) {
        return new ChartIdDateIsrcKey(
            appleMusicChartTrackEntity.getAppleMusicChartId(),
            appleMusicChartTrackEntity.getChartDate(),
            appleMusicChartTrackEntity.getIsrc()
        );
    }
}
