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

import java.time.LocalDate;

import javax.persistence.Column;
import javax.persistence.EmbeddedId;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;

import io.delphiplatform.api.v3.rdb.entity.ChartEntity;
import io.delphiplatform.api.v3.rdb.entity.RegionEntity;
import lombok.Getter;
import lombok.Setter;

@Entity
@Getter
@Setter
@Table(name = "trending_video_chart_summary_report")
public class TrendingVideoChartSummaryReportEntity {

    @EmbeddedId
    private TrendingVideoChartSummaryReportId id;

    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "video_id", insertable = false, updatable = false)
    private ChartmetricVideoEntity video;

    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "chart_id", insertable = false, updatable = false)
    private ChartEntity chart;

    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "country_code", insertable = false, updatable = false)
    private RegionEntity region;

    @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 = "max_position")
    private Integer maxPosition;
    @Column(name = "max_position_date")
    private LocalDate maxPositionDate;
    @Column(name = "min_position")
    private Integer minPosition;
    @Column(name = "min_position_date")
    private LocalDate minPositionDate;
    @Column(name = "total_days")
    private Integer totalDays;

}
