package org.psesquared.server.model; import jakarta.persistence.CascadeType; import jakarta.persistence.Column; import jakarta.persistence.Entity; import jakarta.persistence.GeneratedValue; import jakarta.persistence.GenerationType; import jakarta.persistence.Id; import jakarta.persistence.ManyToOne; import jakarta.persistence.OneToMany; import jakarta.persistence.Table; import java.io.Serializable; import java.util.List; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; /** * An episode of a podcast. */ @Data @Builder @NoArgsConstructor @AllArgsConstructor @Entity @Table(name = "episodes") public class Episode implements Serializable { /** * The primary key for the table. */ @Id @GeneratedValue(strategy=GenerationType.SEQUENCE) @Column(name = "id", updatable = false) private Long id; /** * The GUID of an episode. */ @Column(name = "guid", unique = true) private String guid; /** * The URL where the episode is located at. */ @Column(name = "url", nullable = false) private String url; /** * The title of the episode. */ @Column(name = "title") private String title; /** * The total length of an episode. */ @Column(name = "total") private int total; /** * The podcast the episode is a part of. */ @ManyToOne(optional = false) private Subscription subscription; /** * The actions of an episode. */ @OneToMany(mappedBy = "episode", cascade = CascadeType.REMOVE) private List episodeActions; }