package com.hlab.yanalyst.domain.opal; import com.hlab.yanalyst.domain.video.YtVideo; import io.hypersistence.utils.hibernate.type.json.JsonBinaryType; import jakarta.persistence.*; import lombok.AccessLevel; import lombok.Getter; import lombok.NoArgsConstructor; import lombok.Setter; import org.hibernate.annotations.CreationTimestamp; import org.hibernate.annotations.Type; import java.time.LocalDateTime; @Entity @Table(name = "opal_draft") @Getter @Setter @NoArgsConstructor public class OpalDraft { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "draft_id") private Long draftId; @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "video_id", nullable = false) private YtVideo video; @Type(JsonBinaryType.class) @Column(name = "request_payload_json", columnDefinition = "jsonb") private String requestPayloadJson; @Column(name = "response_text", columnDefinition = "TEXT") private String responseText; @Column(name = "old_script_summary", columnDefinition = "TEXT") private String oldScriptSummary; @Column(name = "new_script_summary", columnDefinition = "TEXT") private String newScriptSummary; @Column(name = "user_feedback", columnDefinition = "TEXT") private String userFeedback; @Column(name = "version_no", nullable = false) private Integer versionNo; @Column(name = "is_accepted", nullable = false) private Boolean isAccepted = false; @Column(name = "accepted_at") private LocalDateTime acceptedAt; @Column(name = "status", nullable = false, length = 20) private String status = "SUCCESS"; @Column(name = "error_msg", columnDefinition = "TEXT") private String errorMsg; @CreationTimestamp @Column(name = "created_at", nullable = false, updatable = false) private LocalDateTime createdAt; }