diff --git a/src/main/java/com/seveneleven/devlens/domain/board/dto/PostStatus.java b/src/main/java/com/seveneleven/devlens/domain/board/dto/PostStatus.java new file mode 100644 index 00000000..bf61d8c3 --- /dev/null +++ b/src/main/java/com/seveneleven/devlens/domain/board/dto/PostStatus.java @@ -0,0 +1,23 @@ +package com.seveneleven.devlens.domain.board.dto; + +import lombok.Getter; + +@Getter +public enum PostStatus { + + DEFAULT("선택"), + IN_PROGRESS("진행"), + ADDITION("추가"), + COMPLETED("완료"), + ON_HOLD("보류"); + + private final String description; + + PostStatus(String description) { + this.description = description; + } + + // 사용할지 고민 + // FEEDBACK("피드백"), + // REQUESTED("요청"); +} diff --git a/src/main/java/com/seveneleven/devlens/domain/board/entity/Answer.java b/src/main/java/com/seveneleven/devlens/domain/board/entity/Answer.java deleted file mode 100644 index 0b71bfef..00000000 --- a/src/main/java/com/seveneleven/devlens/domain/board/entity/Answer.java +++ /dev/null @@ -1,34 +0,0 @@ -package com.seveneleven.devlens.domain.board.entity; - -import com.seveneleven.devlens.global.entity.BaseEntity; -import jakarta.persistence.*; -import lombok.*; - -@Entity -@Getter -@Setter -@ToString -@Builder(toBuilder = true) -@NoArgsConstructor -@AllArgsConstructor(access = AccessLevel.PRIVATE) -@Table(name = "answer") -public class Answer extends BaseEntity { - - @Id - @Column(name = "question_id") // 질문 ID를 기본 키로 사용 - private Long questionId; - - @OneToOne(fetch = FetchType.LAZY) - @MapsId // 질문 ID를 외래 키이면서 기본 키로 매핑 - @JoinColumn(name = "question_id", nullable = false) - private Question question; // 질문 엔티티 참조 - - @Column(name = "content", nullable = false) - private String content; // 답변 내용 - - @Column(name = "register_id", nullable = false) - private String registerId; // 답변 등록자 - - @Column(name = "register_ip", nullable = false) - private String registerIp; // 답변 등록자 IP -} \ No newline at end of file diff --git a/src/main/java/com/seveneleven/devlens/domain/board/entity/AnswerHistory.java b/src/main/java/com/seveneleven/devlens/domain/board/entity/AnswerHistory.java deleted file mode 100644 index 451df64e..00000000 --- a/src/main/java/com/seveneleven/devlens/domain/board/entity/AnswerHistory.java +++ /dev/null @@ -1,39 +0,0 @@ -package com.seveneleven.devlens.domain.board.entity; - -import com.seveneleven.devlens.global.entity.BaseEntity; -import jakarta.persistence.*; -import lombok.*; -import org.springframework.data.annotation.CreatedDate; - -import java.time.LocalDateTime; - -@Entity -@Getter -@Setter -@ToString -@Builder(toBuilder = true) -@NoArgsConstructor -@AllArgsConstructor(access = AccessLevel.PRIVATE) -@Table(name = "answer_history") -public class AnswerHistory extends BaseEntity { - @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) - @Column(name = "question_history_id") - private Long questionHistoryId; - - @Column(name = "question_id") // 질문 ID를 기본 키로 사용 - private Long questionId; - - @Column(name = "content", nullable = false) - private String content; // 답변 내용 - - @Column(name = "register_id", nullable = false) - private String registerId; // 답변 등록자 - - @Column(name = "register_ip", nullable = false) - private String registerIp; // 답변 등록자 IP - - @CreatedDate - @Column(name = "registered_date", nullable = false) - private LocalDateTime registeredDate; -} diff --git a/src/main/java/com/seveneleven/devlens/domain/board/entity/Comment.java b/src/main/java/com/seveneleven/devlens/domain/board/entity/Comment.java index b98d9f94..a0f33476 100644 --- a/src/main/java/com/seveneleven/devlens/domain/board/entity/Comment.java +++ b/src/main/java/com/seveneleven/devlens/domain/board/entity/Comment.java @@ -9,21 +9,17 @@ @Entity @Getter -@Setter -@ToString -@Builder(toBuilder = true) -@NoArgsConstructor -@AllArgsConstructor(access = AccessLevel.PRIVATE) +@NoArgsConstructor(access = AccessLevel.PROTECTED) @Table(name = "comment") public class Comment extends BaseEntity { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) - @Column(name = "comment_id") - private Long commentId; // 댓글 ID + @Column(name = "id") + private Long id; // 댓글 ID @ManyToOne(fetch = FetchType.LAZY) - @JoinColumn(name = "post_id", nullable = false) + @JoinColumn(name = "post_id", nullable = false, referencedColumnName = "id") private Post postId; // 게시물 ID @JoinColumn(name = "parent_comment_id") @@ -36,23 +32,10 @@ public class Comment extends BaseEntity { @Column(name = "content", nullable = false, columnDefinition = "TEXT") private String content; // 내용 - @JoinColumn(name = "register_id", nullable = false, referencedColumnName = "id") - @ManyToOne(fetch = FetchType.LAZY) - private Member registerId; - @Column(name = "register_ip", length = 50) private String registerIp; // 등록자 IP - @Column(name = "registered_date") - private LocalDateTime registeredDate; // 등록일 - - @JoinColumn(name = "modifier_id", nullable = false, referencedColumnName = "id") - @ManyToOne(fetch = FetchType.LAZY) - private Member modifierId; // 수정자 - - @Column(name = "modified_date") - private LocalDateTime modifiedDate; // 등록일 - @Column(name = "modifier_ip", length = 50) private String modifierIp; // 수정자 IP + } \ No newline at end of file diff --git a/src/main/java/com/seveneleven/devlens/domain/board/entity/Post.java b/src/main/java/com/seveneleven/devlens/domain/board/entity/Post.java index 78fd8930..fd74b9b8 100644 --- a/src/main/java/com/seveneleven/devlens/domain/board/entity/Post.java +++ b/src/main/java/com/seveneleven/devlens/domain/board/entity/Post.java @@ -1,45 +1,40 @@ package com.seveneleven.devlens.domain.board.entity; -import com.seveneleven.devlens.domain.member.entity.Member; +import com.seveneleven.devlens.domain.board.dto.PostStatus; import com.seveneleven.devlens.domain.project.entity.ProjectStep; import com.seveneleven.devlens.global.entity.BaseEntity; import jakarta.persistence.*; import lombok.*; -import org.springframework.data.annotation.CreatedBy; -import org.springframework.data.annotation.CreatedDate; -import org.springframework.data.annotation.LastModifiedBy; -import org.springframework.data.annotation.LastModifiedDate; -import java.time.LocalDateTime; +import java.time.LocalDate; @Entity @Getter -@Setter -@ToString -@Builder(toBuilder = true) -@NoArgsConstructor -@AllArgsConstructor(access = AccessLevel.PRIVATE) +@NoArgsConstructor(access = AccessLevel.PROTECTED) @Table(name = "post") public class Post extends BaseEntity { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) - @Column(name = "post_id") - private Long postId; // 게시물 ID + @Column(name = "id") + private Long id; // 게시물 ID (문서번호) - @JoinColumn(name = "project_step_id", nullable = false) + @JoinColumn(name = "project_step_id", nullable = false, referencedColumnName = "id") @ManyToOne(fetch = FetchType.LAZY) private ProjectStep projectStepId; // 프로젝트 단계 ID - @JoinColumn(name = "parent_post_id") + @JoinColumn(name = "parent_post_id", referencedColumnName = "id") @ManyToOne(fetch = FetchType.LAZY) private Post parentPostId; // 부모 게시물 ID @Column(name = "is_pinned_post") - private Boolean isPinnedPost; // 고정 여부 + private Boolean isPinnedPost; // 상단고정 여부 + + @Column(name = "priority") + private Integer priority; // 우선순위 (1,2,3) @Column(name = "status", nullable = false, length = 50) - private String status; // 상태 (요청, 진행, 피드백, 완료, 보류) + private PostStatus status; // 상태 (선택(기본값), 진행, 추가, 완료, 보류) @Column(name = "title", nullable = false, length = 255) private String title; // 제목 @@ -53,27 +48,13 @@ public class Post extends BaseEntity { @Column(name = "has_link", nullable = false) private Boolean hasLink; // 링크 유무 - @CreatedBy - @JoinColumn(name = "register_id", nullable = false, referencedColumnName = "id") - @ManyToOne(fetch = FetchType.LAZY) - private Member registerId; - - @Column(name = "registered_ip", length = 50) - private String registeredIp; // 등록자 IP + @Column(name = "deadline") + private LocalDate deadline; // 마감일자 - @CreatedDate - @Column(name = "registered_date") - private LocalDateTime registeredDate; // 등록일 - - @LastModifiedBy - @JoinColumn(name = "modified_id", nullable = false, referencedColumnName = "id") - @ManyToOne(fetch = FetchType.LAZY) - private Member modifier; // 수정자 - - @LastModifiedDate - @Column(name = "modified_date") - private LocalDateTime modifiedDate; // 수정일 + @Column(name = "register_ip", length = 50) + private String registerIp; // 등록자 IP @Column(name = "modifier_ip", length = 50) private String modifierIp; // 수정자 IP + } \ No newline at end of file diff --git a/src/main/java/com/seveneleven/devlens/domain/board/entity/PostHistory.java b/src/main/java/com/seveneleven/devlens/domain/board/entity/PostHistory.java index 68a8d83c..6bb6f508 100644 --- a/src/main/java/com/seveneleven/devlens/domain/board/entity/PostHistory.java +++ b/src/main/java/com/seveneleven/devlens/domain/board/entity/PostHistory.java @@ -1,5 +1,6 @@ package com.seveneleven.devlens.domain.board.entity; +import com.seveneleven.devlens.domain.board.dto.PostStatus; import com.seveneleven.devlens.domain.member.entity.Member; import com.seveneleven.devlens.domain.project.entity.ProjectStep; import jakarta.persistence.*; @@ -9,21 +10,22 @@ import org.springframework.data.annotation.LastModifiedBy; import org.springframework.data.annotation.LastModifiedDate; +import java.time.LocalDate; import java.time.LocalDateTime; @Entity @Getter -@Setter -@ToString -@Builder(toBuilder = true) -@NoArgsConstructor -@AllArgsConstructor(access = AccessLevel.PRIVATE) +@NoArgsConstructor(access = AccessLevel.PROTECTED) @Table(name = "post_history") public class PostHistory { + @Id @GeneratedValue(strategy = GenerationType.IDENTITY) - @Column(name = "post_history_id") - private Long postHistoryId; // 게시물 ID + @Column(name = "id") + private Long id; // 게시물 이력 ID + + @Column(name = "post_id", nullable = false) + private Long postId; // 게시물 ID @Column(name = "project_step_id", nullable = false) private Long projectStepId; // 프로젝트 단계 ID @@ -32,10 +34,13 @@ public class PostHistory { private Long parentPostId; // 부모 게시물 ID @Column(name = "is_pinned_post") - private Boolean isPinnedPost; // 고정 여부 + private Boolean isPinnedPost; // 상단고정 여부 + + @Column(name = "priority") + private Integer priority; // 우선순위 (1,2,3) @Column(name = "status", nullable = false, length = 50) - private String status; // 상태 (요청, 진행, 피드백, 완료, 보류) + private PostStatus status; // 상태 (선택(기본값), 진행, 추가, 완료, 보류) @Column(name = "title", nullable = false, length = 255) private String title; // 제목 @@ -49,27 +54,13 @@ public class PostHistory { @Column(name = "has_link", nullable = false) private Boolean hasLink; // 링크 유무 - @CreatedBy - @JoinColumn(name = "register_id", nullable = false, referencedColumnName = "id") - @ManyToOne(fetch = FetchType.LAZY) - private Member registerId; + @Column(name = "deadline") + private LocalDate deadline; // 마감일자 @Column(name = "registered_ip", length = 50) private String registeredIp; // 등록자 IP - @CreatedDate - @Column(name = "registered_date") - private LocalDateTime registeredDate; // 등록일 - - @LastModifiedBy - @JoinColumn(name = "modified_id", nullable = false, referencedColumnName = "id") - @ManyToOne(fetch = FetchType.LAZY) - private Member modifier; // 수정자 - - @LastModifiedDate - @Column(name = "modified_date") - private LocalDateTime modifiedDate; // 등록일 - @Column(name = "modifier_ip", length = 50) private String modifierIp; // 수정자 IP + } diff --git a/src/main/java/com/seveneleven/devlens/domain/board/entity/Question.java b/src/main/java/com/seveneleven/devlens/domain/board/entity/Question.java index 1c86a5c5..e69de29b 100644 --- a/src/main/java/com/seveneleven/devlens/domain/board/entity/Question.java +++ b/src/main/java/com/seveneleven/devlens/domain/board/entity/Question.java @@ -1,62 +0,0 @@ -package com.seveneleven.devlens.domain.board.entity; - -import com.seveneleven.devlens.domain.member.entity.Member; -import com.seveneleven.devlens.global.entity.BaseEntity; -import jakarta.persistence.*; -import lombok.*; -import org.springframework.data.annotation.CreatedBy; -import org.springframework.data.annotation.CreatedDate; -import org.springframework.data.annotation.LastModifiedBy; -import org.springframework.data.annotation.LastModifiedDate; - -import java.time.LocalDateTime; - -@Entity -@Getter -@Setter -@ToString -@Builder(toBuilder = true) -@NoArgsConstructor -@AllArgsConstructor(access = AccessLevel.PRIVATE) -@Table(name = "question") -public class Question extends BaseEntity { - - @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) - @Column(name = "question_id") - private Long questionId; // 질문 ID - - @JoinColumn(name = "post_id", nullable = false) - @OneToOne(fetch = FetchType.LAZY) - private Post postId; // 게시물 ID - - @Column(name = "question_content", nullable = false, columnDefinition = "TEXT") - private String questionContent; // 질문 내용 - - @Column(name = "answer_content", columnDefinition = "TEXT") - private String answerContent; // 답변 내용 - - @CreatedDate - @Column(name = "registered_date", nullable = false, updatable = false) - private LocalDateTime registeredDate; // 등록일시 - - @LastModifiedDate - @Column(name = "modification_date") - private LocalDateTime modificationDate; // 수정일시 - - @CreatedBy - @JoinColumn(name = "register_id", updatable = false, referencedColumnName = "id") - @OneToOne(fetch = FetchType.LAZY) - private Member registerId; // 등록자 - - @LastModifiedBy - @JoinColumn(name = "modified_id", referencedColumnName = "id") - @OneToOne(fetch = FetchType.LAZY) - private Member modifierId; // 수정자 - - @Column(name = "register_ip", length = 50) - private String registerIp; // 등록자 IP - - @Column(name = "modifier_ip", length = 50) - private String modifierIp; // 수정자 IP -} \ No newline at end of file diff --git a/src/main/java/com/seveneleven/devlens/domain/board/entity/QuestionHistory.java b/src/main/java/com/seveneleven/devlens/domain/board/entity/QuestionHistory.java deleted file mode 100644 index 027946bf..00000000 --- a/src/main/java/com/seveneleven/devlens/domain/board/entity/QuestionHistory.java +++ /dev/null @@ -1,58 +0,0 @@ -package com.seveneleven.devlens.domain.board.entity; - -import com.seveneleven.devlens.domain.member.entity.Member; -import com.seveneleven.devlens.global.entity.BaseEntity; -import jakarta.persistence.*; -import lombok.*; -import org.springframework.data.annotation.CreatedBy; -import org.springframework.data.annotation.CreatedDate; -import org.springframework.data.annotation.LastModifiedBy; -import org.springframework.data.annotation.LastModifiedDate; - -import java.time.LocalDateTime; - -@Entity -@Getter -@Setter -@ToString -@Builder(toBuilder = true) -@NoArgsConstructor -@AllArgsConstructor(access = AccessLevel.PRIVATE) -@Table(name = "question_history") -public class QuestionHistory extends BaseEntity { - @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) - @Column(name = "question_history_id") - private Long questionHistoryId; // 질문 ID - - @Column(name = "post_id", nullable = false) - private Long postId; // 게시물 ID - - @Column(name = "question_content", nullable = false, columnDefinition = "TEXT") - private String questionContent; // 질문 내용 - - @Column(name = "answer_content", columnDefinition = "TEXT") - private String answerContent; // 답변 내용 - - @CreatedDate - @Column(name = "registered_date", nullable = false, updatable = false) - private LocalDateTime registeredDate; // 등록일시 - - @LastModifiedDate - @Column(name = "modification_date") - private LocalDateTime modificationDate; // 수정일시 - - @CreatedBy - @Column(name = "register_id", updatable = false) - private Long registerId; // 등록자 - - @LastModifiedBy - @Column(name = "modifier_id") - private Long modifierId; // 수정자 - - @Column(name = "register_ip", length = 50) - private String registerIp; // 등록자 IP - - @Column(name = "modifier_ip", length = 50) - private String modifierIp; // 수정자 IP -} \ No newline at end of file