package tv.pluto.mongo.entities.episodes;

import com.google.gson.annotations.JsonAdapter;
import java.util.Collections;
import java.util.Date;
import java.util.List;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.bson.BsonType;
import org.bson.codecs.pojo.annotations.BsonRepresentation;
import tv.pluto.mongo.entities.clips.EncryptionParams;
import tv.pluto.mongo.entities.common.Output;
import tv.pluto.mongo.utils.json.DateAdapter;

@Data
@NoArgsConstructor
@AllArgsConstructor
public class Transcode {
  @JsonAdapter(DateAdapter.class)
  private Date finishedAt;

  private String externalID = "";
  private String transcoderName = "";
  private String transcodeMode = "";

  @BsonRepresentation(BsonType.OBJECT_ID)
  private String id;

  private List<Output> output = Collections.emptyList();
  private String state = ""; // not found in schema
  private String libVersion = "";
  private String transcoderVersion = "";
  private EncryptionParams encryptionParams = new EncryptionParams();

  public String getExternalID() {
    return externalID == null ? "" : externalID;
  }

  public String getTranscoderName() {
    return transcoderName == null ? "" : transcoderName;
  }

  public String getTranscodeMode() {
    return transcodeMode == null ? "" : transcodeMode;
  }

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

  public String getState() {
    return state == null ? "" : state;
  }

  public String getLibVersion() {
    return libVersion == null ? "" : libVersion;
  }

  public String getTranscoderVersion() {
    return transcoderVersion == null ? "" : transcoderVersion;
  }
}
