package com.aluracursos.screenmatch.model;
import com.aluracursos.screenmatch.service.ConsultaChatGPT;
import com.fasterxml.jackson.annotation.JsonAlias;
import jakarta.persistence.*;
import java.util.List;
import java.util.Optional;
import java.util.OptionalDouble;
@Entity
@Table(name = "series")
public class Serie {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long Id;
@Column(unique = true)
private String titulo;
private Integer totalTemporadas;
private Double evaluacion;
private String poster;
@Enumerated(EnumType.STRING)
private Categoria genero;
private String actores;
private String sinopsis;
@OneToMany(mappedBy = "serie", cascade = CascadeType.ALL, fetch = FetchType.EAGER)
private List<Episodio> episodios;
public Serie(){}
public Serie(DatosSerie datosSerie){
this.titulo = datosSerie.titulo();
this.totalTemporadas = datosSerie.totalTemporadas();
this.evaluacion = OptionalDouble.of(Double.valueOf(datosSerie.evaluacion())).orElse(0); // conversion de String s Double
this.poster = datosSerie.poster();
this.genero = Categoria.fromString(datosSerie.genero().split(",")[0].trim()); // cambiando el dato String a tipo "Categotria"
this.actores = datosSerie.actores();
this.sinopsis = datosSerie.sinopsis();
}
public Long getId() {
return Id;
}
public void setId(Long id) {
Id = id;
}
public List<Episodio> getEpisodios() {
return episodios;
}
public void setEpisodios(List<Episodio> episodios) {
episodios.forEach(e -> e.setSerie(this));
this.episodios = episodios;
}
public String getTitulo() {
return titulo;
}
public void setTitulo(String titulo) {
this.titulo = titulo;
}
public Integer getTotalTemporadas() {
return totalTemporadas;
}
public void setTotalTemporadas(Integer totalTemporadas) {
this.totalTemporadas = totalTemporadas;
}
public Double getEvaluacion() {
return evaluacion;
}
public void setEvaluacion(Double evaluacion) {
this.evaluacion = evaluacion;
}
public String getPoster() {
return poster;
}
public void setPoster(String poster) {
this.poster = poster;
}
public Categoria getGenero() {
return genero;
}
public void setGenero(Categoria genero) {
this.genero = genero;
}
public String getActores() {
return actores;
}
public void setActores(String actores) {
this.actores = actores;
}
public String getSinopsis() {
return sinopsis;
}
public void setSinopsis(String sinopsis) {
this.sinopsis = sinopsis;
}
@Override
public String toString() {
return
" genero=" + genero +
", titulo='" + titulo + '\'' +
", totalTemporadas=" + totalTemporadas +
", evaluacion=" + evaluacion +
", poster='" + poster + '\'' +
", actores='" + actores + '\'' +
", sinopsis='" + sinopsis + '\'' +
", episodios='" + episodios + '\'';
}
}