diff --git a/module-domain/src/main/java/com/gaethering/moduledomain/domain/board/Category.java b/module-domain/src/main/java/com/gaethering/moduledomain/domain/board/Category.java new file mode 100644 index 0000000..4f353aa --- /dev/null +++ b/module-domain/src/main/java/com/gaethering/moduledomain/domain/board/Category.java @@ -0,0 +1,26 @@ +package com.gaethering.moduledomain.domain.board; + +import lombok.*; + +import javax.persistence.*; +import java.util.ArrayList; +import java.util.List; + +@Entity +@Getter +@Builder +@AllArgsConstructor +@NoArgsConstructor(access = AccessLevel.PROTECTED) +public class Category { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + @Column(name = "category_id") + private Long id; + + @Column(nullable = false) + private String categoryName; + + @OneToMany(mappedBy = "category") + private List postCategories = new ArrayList<>(); +} diff --git a/module-domain/src/main/java/com/gaethering/moduledomain/domain/board/Comment.java b/module-domain/src/main/java/com/gaethering/moduledomain/domain/board/Comment.java new file mode 100644 index 0000000..88d36fc --- /dev/null +++ b/module-domain/src/main/java/com/gaethering/moduledomain/domain/board/Comment.java @@ -0,0 +1,39 @@ +package com.gaethering.moduledomain.domain.board; + +import com.gaethering.moduledomain.domain.basic.BaseTimeEntity; +import com.gaethering.moduledomain.domain.member.Member; +import lombok.*; + +import javax.persistence.*; + +@Entity +@Getter +@Builder +@AllArgsConstructor +@NoArgsConstructor(access = AccessLevel.PROTECTED) +public class Comment extends BaseTimeEntity { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + @Column(name = "comment_id", nullable = false) + private Long id; + + @Column(nullable = false) + private String comment; + + @ManyToOne(fetch = FetchType.LAZY) + @JoinColumn(name = "post_id", updatable = false) + private Post post; + + @ManyToOne(fetch = FetchType.LAZY) + @JoinColumn(name = "member_id", updatable = false) + private Member member; + + public void setPost (Post post) { + this.post = post; + } + + public void setMember (Member member) { + this.member = member; + } +} diff --git a/module-domain/src/main/java/com/gaethering/moduledomain/domain/board/Heart.java b/module-domain/src/main/java/com/gaethering/moduledomain/domain/board/Heart.java new file mode 100644 index 0000000..ec6df2a --- /dev/null +++ b/module-domain/src/main/java/com/gaethering/moduledomain/domain/board/Heart.java @@ -0,0 +1,34 @@ +package com.gaethering.moduledomain.domain.board; + +import com.gaethering.moduledomain.domain.member.Member; +import lombok.*; + +import javax.persistence.*; + +@Entity +@Getter +@Builder +@AllArgsConstructor +@NoArgsConstructor(access = AccessLevel.PROTECTED) +public class Heart { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + @Column(name = "heart_id") + private Long id; + + @ManyToOne(fetch = FetchType.LAZY) + @JoinColumn(name = "member_id", updatable = false) + private Member member; + + @ManyToOne(fetch = FetchType.LAZY) + @JoinColumn(name = "post_id", updatable = false) + private Post post; + + public void setPost (Post post) { + this.post = post; + } + public void setMember (Member member) { + this.member = member; + } +} diff --git a/module-domain/src/main/java/com/gaethering/moduledomain/domain/board/Post.java b/module-domain/src/main/java/com/gaethering/moduledomain/domain/board/Post.java new file mode 100644 index 0000000..e95867b --- /dev/null +++ b/module-domain/src/main/java/com/gaethering/moduledomain/domain/board/Post.java @@ -0,0 +1,55 @@ +package com.gaethering.moduledomain.domain.board; + +import com.gaethering.moduledomain.domain.basic.BaseTimeEntity; +import com.gaethering.moduledomain.domain.member.Member; +import lombok.*; +import org.hibernate.annotations.ColumnDefault; + +import javax.persistence.*; +import java.util.ArrayList; +import java.util.List; + +@Entity +@Getter +@Builder +@AllArgsConstructor +@NoArgsConstructor(access = AccessLevel.PROTECTED) +public class Post extends BaseTimeEntity { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + @Column(name = "post_id", nullable = false) + private Long id; + + @Column(nullable = false) + private String title; + + @Column(columnDefinition = "TEXT", nullable = false) + private String content; + + @ColumnDefault("0") + private int viewCnt; + + @ManyToOne(fetch = FetchType.LAZY) + @JoinColumn(name = "member_id") + private Member member; + + @OneToMany(mappedBy = "post") + private List comments = new ArrayList<>(); + + @OneToMany(mappedBy = "post", + cascade = CascadeType.REMOVE, + orphanRemoval = true) + private List postImages = new ArrayList<>(); + + @OneToMany(mappedBy = "post") + private List hearts = new ArrayList<>(); + + @OneToMany(mappedBy = "post") + private List postCategories = new ArrayList<>(); + + public void addImage (PostImage image) { + this.postImages.add(image); + image.setPost(this); + } +} diff --git a/module-domain/src/main/java/com/gaethering/moduledomain/domain/board/PostCategory.java b/module-domain/src/main/java/com/gaethering/moduledomain/domain/board/PostCategory.java new file mode 100644 index 0000000..e322a1a --- /dev/null +++ b/module-domain/src/main/java/com/gaethering/moduledomain/domain/board/PostCategory.java @@ -0,0 +1,26 @@ +package com.gaethering.moduledomain.domain.board; + +import lombok.*; + +import javax.persistence.*; + +@Entity +@Getter +@Builder +@AllArgsConstructor +@NoArgsConstructor(access = AccessLevel.PROTECTED) +public class PostCategory { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + @Column(name = "post_category_id", nullable = false) + private Long id; + + @ManyToOne(fetch = FetchType.LAZY) + @JoinColumn(name = "post_id", updatable = false) + private Post post; + + @ManyToOne(fetch = FetchType.LAZY) + @JoinColumn(name = "category_id", updatable = false) + private Category category; +} diff --git a/module-domain/src/main/java/com/gaethering/moduledomain/domain/board/PostImage.java b/module-domain/src/main/java/com/gaethering/moduledomain/domain/board/PostImage.java new file mode 100644 index 0000000..a58f6ab --- /dev/null +++ b/module-domain/src/main/java/com/gaethering/moduledomain/domain/board/PostImage.java @@ -0,0 +1,30 @@ +package com.gaethering.moduledomain.domain.board; + +import lombok.*; + +import javax.persistence.*; + +@Entity +@Getter +@Builder +@AllArgsConstructor +@NoArgsConstructor(access = AccessLevel.PROTECTED) +public class PostImage { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + @Column(name = "image_id") + private Long id; + + private String imageUrl; + + private boolean isRepresentative; + + @ManyToOne(fetch = FetchType.LAZY) + @JoinColumn(name = "post_id", updatable = false) + private Post post; + + public void setPost (Post post) { + this.post = post; + } +} diff --git a/module-domain/src/main/java/com/gaethering/moduledomain/domain/member/Member.java b/module-domain/src/main/java/com/gaethering/moduledomain/domain/member/Member.java index 2a7020c..ad8bf51 100644 --- a/module-domain/src/main/java/com/gaethering/moduledomain/domain/member/Member.java +++ b/module-domain/src/main/java/com/gaethering/moduledomain/domain/member/Member.java @@ -6,17 +6,8 @@ import java.time.LocalDateTime; import java.util.ArrayList; import java.util.List; -import javax.persistence.Column; -import javax.persistence.Entity; -import javax.persistence.EnumType; -import javax.persistence.Enumerated; -import javax.persistence.FetchType; -import javax.persistence.GeneratedValue; -import javax.persistence.GenerationType; -import javax.persistence.Id; -import javax.persistence.JoinColumn; -import javax.persistence.OneToMany; -import javax.persistence.OneToOne; +import javax.persistence.*; + import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Getter;