package tv.pluto.mongo.entities.episodes;

import java.util.Collections;
import java.util.List;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.bson.BsonType;
import org.bson.codecs.pojo.annotations.BsonIgnore;
import org.bson.codecs.pojo.annotations.BsonProperty;
import org.bson.codecs.pojo.annotations.BsonRepresentation;
import tv.pluto.mongo.entities.common.AdPod;
import tv.pluto.mongo.utils.json.SkipDeserialisation;

@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class SourcePopulated {
  @BsonRepresentation(BsonType.OBJECT_ID)
  private String id;

  @BsonIgnore private Clip clip = new Clip();

  @BsonRepresentation(BsonType.OBJECT_ID)
  @BsonProperty("clip")
  @SkipDeserialisation
  private String clipId;

  private Integer inPoint;
  private Integer outPoint;
  private List<AdPod> adPods = Collections.emptyList();
  private List<AlternativeAdPods> alternativeAdPods = Collections.emptyList();

  public Integer getInPoint() {
    return inPoint == null ? 0 : inPoint;
  }

  public Integer getOutPoint() {
    return outPoint == null ? 0 : outPoint;
  }

  public String getId() {
    return id == null ? "" : id;
  }
}
