package com.openisle.model; import jakarta.persistence.*; import lombok.Getter; import lombok.NoArgsConstructor; import lombok.Setter; import java.time.LocalDateTime; /** * Post entity representing an article posted by a user. */ @Entity @Getter @Setter @NoArgsConstructor @Table(name = "posts") public class Post { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; @Column(nullable = false) private String title; @Column(nullable = false, columnDefinition = "TEXT") private String content; @Column(nullable = false) private LocalDateTime createdAt; @ManyToOne(optional = false, fetch = FetchType.LAZY) @JoinColumn(name = "author_id") private User author; @ManyToOne(optional = false, fetch = FetchType.LAZY) @JoinColumn(name = "category_id") private Category category; @Column(nullable = false) private long views = 0; @Enumerated(EnumType.STRING) @Column(nullable = false) private PostStatus status = PostStatus.PUBLISHED; @PrePersist protected void onCreate() { this.createdAt = LocalDateTime.now(); } }