diff --git a/server/src/main/java/com/main36/pikcha/domain/comment/entity/Comment.java b/server/src/main/java/com/main36/pikcha/domain/comment/entity/Comment.java index acd5600f..e6e8b70c 100644 --- a/server/src/main/java/com/main36/pikcha/domain/comment/entity/Comment.java +++ b/server/src/main/java/com/main36/pikcha/domain/comment/entity/Comment.java @@ -3,10 +3,16 @@ import com.main36.pikcha.domain.member.entity.Member; import com.main36.pikcha.domain.post.entity.Post; import com.main36.pikcha.global.audit.Auditable; +import com.main36.pikcha.global.exception.BusinessLogicException; +import com.main36.pikcha.global.exception.ExceptionCode; +import com.main36.pikcha.global.utils.CommentStatusConverter; import lombok.*; +import org.springframework.batch.item.validator.SpringValidator; import javax.persistence.*; +import java.net.http.HttpClient; import java.util.ArrayList; +import java.util.Arrays; import java.util.List; @Getter @@ -29,6 +35,9 @@ public class Comment extends Auditable { @JoinColumn(name = "member_id") private Member member; + @Convert(converter = CommentStatusConverter.class) + private CommentStatus status = CommentStatus.Alive; + @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "post_id") private Post post; @@ -47,4 +56,25 @@ public void updateParent(Comment parent){ public List getChildren(){ return this.children; } + + @Getter + public enum CommentStatus { + Alive("생존", "1"), + Dead("사망", "2"); + + private String status; + private String code; + + CommentStatus(String status, String code) { + this.status = status; + this.code = code; + } + + public static CommentStatus ofCode(String code) { + return Arrays.stream(CommentStatus.values()) + .filter(v-> v.getCode().equals(code)) + .findAny() + .orElseThrow(()-> new BusinessLogicException(ExceptionCode.COMMENT_STATUS_INVALID)); + } + } } diff --git a/server/src/main/java/com/main36/pikcha/global/exception/ExceptionCode.java b/server/src/main/java/com/main36/pikcha/global/exception/ExceptionCode.java index 9b7b82bb..fcb60620 100644 --- a/server/src/main/java/com/main36/pikcha/global/exception/ExceptionCode.java +++ b/server/src/main/java/com/main36/pikcha/global/exception/ExceptionCode.java @@ -17,6 +17,7 @@ public enum ExceptionCode { /* COMMENT */ COMMENT_NOT_FOUND(404, "Comment not found"), + COMMENT_STATUS_INVALID(404, "Comment status is inValid"), COMMENT_EXISTS(409, "Comment exists"), NOT_AUTHOR(403, "This Member didn't write the Comment"), diff --git a/server/src/main/java/com/main36/pikcha/global/utils/CommentStatusConverter.java b/server/src/main/java/com/main36/pikcha/global/utils/CommentStatusConverter.java new file mode 100644 index 00000000..f8991549 --- /dev/null +++ b/server/src/main/java/com/main36/pikcha/global/utils/CommentStatusConverter.java @@ -0,0 +1,19 @@ +package com.main36.pikcha.global.utils; + +import com.main36.pikcha.domain.comment.entity.Comment; + +import javax.persistence.AttributeConverter; +import javax.persistence.Converter; + +@Converter +public class CommentStatusConverter implements AttributeConverter { + @Override + public String convertToDatabaseColumn(Comment.CommentStatus attribute) { + return attribute.getCode(); + } + + @Override + public Comment.CommentStatus convertToEntityAttribute(String dbData) { + return Comment.CommentStatus.ofCode(dbData); + } +}