-
Notifications
You must be signed in to change notification settings - Fork 2
Open
Description
I've added the fields below in order to support series:
package com.ismael.movies.model;
import com.ismael.movies.enums.MovieGenre;
import com.ismael.movies.enums.VideoType;
import jakarta.persistence.*;
import lombok.Data;
import org.hibernate.annotations.Fetch;
import org.hibernate.annotations.FetchMode;
import org.hibernate.annotations.JdbcTypeCode;
import org.hibernate.annotations.UuidGenerator;
import java.io.Serializable;
import java.sql.Types;
import java.util.Date;
import java.util.List;
import java.util.Set;
import java.util.UUID;
@Data
@Entity
@Table(name = "videos", uniqueConstraints = {
@UniqueConstraint(columnNames = "RID")
})
public class Video implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private long id;
@Column(nullable = false)
private String title;
@Column(nullable = false, columnDefinition = "MEDIUMTEXT")
private String synopsis;
@ElementCollection(targetClass = MovieGenre.class)
@Enumerated(EnumType.STRING)
@CollectionTable(name = "video_genres", joinColumns = @JoinColumn(name = "video_id"))
@Column(nullable = false, name = "genre")
@Fetch(FetchMode.JOIN)
private Set<MovieGenre> genres;
@Enumerated(EnumType.STRING)
@Column(nullable = false)
private VideoType videoType; // FILM ou SERIES
private Date releaseDate;
private Date endDate; // Para séries que já foram concluídas
@UuidGenerator
@JdbcTypeCode(Types.VARCHAR)
@Column(name = "rid", nullable = false)
private UUID rid;
@OneToMany(mappedBy = "video", cascade = CascadeType.ALL)
@Fetch(FetchMode.JOIN)
private List<Rating> review;
private String backgroundImgUrl;
private String coverImgUrl;
private String trailerUrl;
@OneToMany(mappedBy = "series", cascade = CascadeType.ALL, orphanRemoval = true)
private List<Episode> episodes; // Relação com episódios, se for uma série
}
@Data
@Entity
@Table(name = "episodes")
public class Episode {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@ManyToOne
@JoinColumn(name = "series_id", nullable = false)
private Video series;
private String title;
private int season;
private int episodeNumber;
private String videoUrl; // URL do episódio
}
public enum VideoType {
FILM, SERIES
}
if (video.getVideoType() == VideoType.SERIES) {
List<Episode> episodes = video.getEpisodes();
// Exibir lista de episódios
} else {
// Exibir apenas as informações do filme
}
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels