package io.delphiplatform.api.v3.rdb.entity.apple.music;

import java.time.LocalDate;

import javax.persistence.Column;
import javax.persistence.Embedded;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;

import io.delphiplatform.api.v3.constant.ChartmetricPartner;
import lombok.Getter;
import lombok.Setter;

@Entity
@Table(name = "fact_apple_music_chart_track_lifetime", schema = ChartmetricPartner.APPLE)
@Getter
@Setter
public class AppleMusicChartTrackLifetimeEntity {

    @Id
    private String id;

    @Column(name = "apple_music_track_id")
    private String appleMusicTrackId;

    @Column(name = "apple_music_chart_id")
    private String appleMusicChartId;

    @Column(name = "total_days")
    private Integer totalDays;

    @Column(name = "min_position")
    private Integer minPosition;

    @Column(name = "max_position")
    private Integer maxPosition;

    @Column(name = "min_position_date")
    private LocalDate minPositionDate;

    @Column(name = "max_position_date")
    private LocalDate maxPositionDate;

    @Column(name = "earliest_position")
    private Integer earliestPosition;

    @Column(name = "earliest_position_date")
    private LocalDate earliestPositionDate;

    @Column(name = "latest_position")
    private Integer latestPosition;

    @Column(name = "latest_position_date")
    private LocalDate latestPositionDate;

    @Column(name = "isrc")
    private String isrc;

    @Column(name = "isrc_total_days")
    private Integer isrcTotalDays;

    @Column(name = "isrc_min_position")
    private Integer isrcMinPosition;

    @Column(name = "isrc_max_position")
    private Integer isrcMaxPosition;

    @Column(name = "isrc_min_position_date")
    private LocalDate isrcMinPositionDate;

    @Column(name = "isrc_max_position_date")
    private LocalDate isrcMaxPositionDate;

    @Column(name = "isrc_earliest_position")
    private Integer isrcEarliestPosition;

    @Column(name = "isrc_earliest_position_date")
    private LocalDate isrcEarliestPositionDate;

    @Column(name = "isrc_latest_position")
    private Integer isrcLatestPosition;

    @Column(name = "isrc_latest_position_date")
    private LocalDate isrcLatestPositionDate;

    @ManyToOne
    @JoinColumn(name = "apple_music_track_id", insertable = false, updatable = false)
    private AppleMusicTrackEntity track;

    @ManyToOne
    @JoinColumn(name = "apple_music_chart_id", insertable = false, updatable = false)
    private AppleMusicChartEntity chart;

    @Embedded
    private AppleMusicIsrcAndChartAndTrackIds isrcAndCharAndTrackIds;


}
