diff --git a/src/main/java/com/project/InsightPrep/domain/post/entity/Comment.java b/src/main/java/com/project/InsightPrep/domain/post/entity/Comment.java new file mode 100644 index 0000000..66bbf04 --- /dev/null +++ b/src/main/java/com/project/InsightPrep/domain/post/entity/Comment.java @@ -0,0 +1,45 @@ +package com.project.InsightPrep.domain.post.entity; + +import com.project.InsightPrep.domain.member.entity.Member; +import com.project.InsightPrep.global.common.entity.BaseTimeEntity; +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.FetchType; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.GenerationType; +import jakarta.persistence.Id; +import jakarta.persistence.JoinColumn; +import jakarta.persistence.ManyToOne; +import jakarta.persistence.Table; +import lombok.AccessLevel; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Getter; +import lombok.NoArgsConstructor; + +@Entity +@Table(name = "comment") +@Getter +@NoArgsConstructor(access = AccessLevel.PROTECTED) +@AllArgsConstructor +@Builder +public class Comment extends BaseTimeEntity { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + + // 댓글 내용 + @Column(columnDefinition = "TEXT", nullable = false) + private String content; + + // 댓글 작성자 + @ManyToOne(fetch = FetchType.LAZY) + @JoinColumn(name = "member_id", nullable = false) + private Member member; + + // 댓글이 달린 공유 게시글 + @ManyToOne(fetch = FetchType.LAZY) + @JoinColumn(name = "post_id", nullable = false) + private SharedPost sharedPost; +} diff --git a/src/main/java/com/project/InsightPrep/domain/post/entity/PostStatus.java b/src/main/java/com/project/InsightPrep/domain/post/entity/PostStatus.java new file mode 100644 index 0000000..632bc6d --- /dev/null +++ b/src/main/java/com/project/InsightPrep/domain/post/entity/PostStatus.java @@ -0,0 +1,5 @@ +package com.project.InsightPrep.domain.post.entity; + +public enum PostStatus { + OPEN, RESOLVED +} diff --git a/src/main/java/com/project/InsightPrep/domain/post/entity/SharedPost.java b/src/main/java/com/project/InsightPrep/domain/post/entity/SharedPost.java new file mode 100644 index 0000000..a606323 --- /dev/null +++ b/src/main/java/com/project/InsightPrep/domain/post/entity/SharedPost.java @@ -0,0 +1,56 @@ +package com.project.InsightPrep.domain.post.entity; + +import com.project.InsightPrep.domain.member.entity.Member; +import com.project.InsightPrep.domain.question.entity.Answer; +import com.project.InsightPrep.global.common.entity.BaseTimeEntity; +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.EnumType; +import jakarta.persistence.Enumerated; +import jakarta.persistence.FetchType; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.GenerationType; +import jakarta.persistence.Id; +import jakarta.persistence.JoinColumn; +import jakarta.persistence.ManyToOne; +import jakarta.persistence.Table; +import lombok.AccessLevel; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Getter; +import lombok.NoArgsConstructor; + +@Entity +@Table(name = "shared_post") +@Getter +@NoArgsConstructor(access = AccessLevel.PROTECTED) +@AllArgsConstructor +@Builder +public class SharedPost extends BaseTimeEntity { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + + @Column(nullable = false) + private String title; + + // 게시글 본문 + @Column(nullable = false, columnDefinition = "TEXT") + private String content; + + // 공유된 답변 + @ManyToOne(fetch = FetchType.LAZY, optional = false) + @JoinColumn(name = "answer_id") + private Answer answer; + + // 작성자 + @ManyToOne(fetch = FetchType.LAZY, optional = false) + @JoinColumn(name = "member_id") + private Member member; + + // 게시글 상태: OPEN or RESOLVED + @Enumerated(EnumType.STRING) + @Column(nullable = false) + private PostStatus status = PostStatus.OPEN; +} diff --git a/src/main/java/com/project/InsightPrep/domain/question/entity/ReviewBookmark.java b/src/main/java/com/project/InsightPrep/domain/question/entity/ReviewBookmark.java deleted file mode 100644 index a7e5ee0..0000000 --- a/src/main/java/com/project/InsightPrep/domain/question/entity/ReviewBookmark.java +++ /dev/null @@ -1,28 +0,0 @@ -package com.project.InsightPrep.domain.question.entity; - -import com.project.InsightPrep.domain.member.entity.Member; -import com.project.InsightPrep.global.common.entity.BaseTimeEntity; -import jakarta.persistence.Entity; -import jakarta.persistence.GeneratedValue; -import jakarta.persistence.GenerationType; -import jakarta.persistence.Id; -import jakarta.persistence.JoinColumn; -import jakarta.persistence.ManyToOne; -import jakarta.persistence.Table; - -@Entity -@Table(name = "review_bookmark") -public class ReviewBookmark extends BaseTimeEntity { - - @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) - private Long id; - - @ManyToOne - @JoinColumn(name = "member_id", nullable = false) - private Member member; - - @ManyToOne - @JoinColumn(name = "answer_id", nullable = false) - private Answer answer; -}