From 1d98999a552664465178cd5d5636b5c51a032496 Mon Sep 17 00:00:00 2001 From: andrew Date: Fri, 31 Jan 2025 17:48:17 +0900 Subject: [PATCH 1/3] =?UTF-8?q?CLAP-185=20fix:=20=EB=8C=93=EA=B8=80=20?= =?UTF-8?q?=EC=9E=91=EC=84=B1=20=EB=B0=8F=20=EC=88=98=EC=A0=95=20=EA=B6=8C?= =?UTF-8?q?=ED=95=9C=EC=9D=B4=20=EC=9E=88=EB=8A=94=EC=A7=80=20=ED=99=95?= =?UTF-8?q?=EC=9D=B8=ED=95=98=EB=8A=94=20method=20=EB=A6=AC=ED=8C=A9?= =?UTF-8?q?=ED=86=A0=EB=A7=81=20=EC=9E=91=EC=97=85=20=EC=A7=84=ED=96=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../CommentPersistenceAdapter.java | 6 ----- .../comment/CommandCommentService.java | 21 ++-------------- .../service/comment/PostCommentService.java | 25 ++----------------- .../server/domain/model/member/Member.java | 22 ++++++++++++++++ 4 files changed, 26 insertions(+), 48 deletions(-) diff --git a/src/main/java/clap/server/adapter/outbound/persistense/CommentPersistenceAdapter.java b/src/main/java/clap/server/adapter/outbound/persistense/CommentPersistenceAdapter.java index b50ca262..aec21821 100644 --- a/src/main/java/clap/server/adapter/outbound/persistense/CommentPersistenceAdapter.java +++ b/src/main/java/clap/server/adapter/outbound/persistense/CommentPersistenceAdapter.java @@ -29,10 +29,4 @@ public Comment saveComment(Comment comment) { CommentEntity commentEntity = commentRepository.save(commentPersistenceMapper.toEntity(comment)); return commentPersistenceMapper.toDomain(commentEntity); } - - @Override - public Comment saveComment(Comment comment) { - CommentEntity commentEntity = commentRepository.save(commentPersistenceMapper.toEntity(comment)); - return commentPersistenceMapper.toDomain(commentEntity); - } } diff --git a/src/main/java/clap/server/application/service/comment/CommandCommentService.java b/src/main/java/clap/server/application/service/comment/CommandCommentService.java index 6312c90b..9b8ed384 100644 --- a/src/main/java/clap/server/application/service/comment/CommandCommentService.java +++ b/src/main/java/clap/server/application/service/comment/CommandCommentService.java @@ -42,7 +42,7 @@ public void updateComment(Long userId, Long commentId, PostAndEditCommentRequest Comment comment = loadCommentPort.findById(commentId) .orElseThrow(() -> new ApplicationException(CommentErrorCode.COMMENT_NOT_FOUND)); - if (checkCommenter(comment.getTask(), member)) { + if (Member.checkCommenter(comment.getTask(), member)) { comment.updateComment(request.content()); commandCommentPort.saveComment(comment); @@ -58,7 +58,7 @@ public void deleteComment(Long userId, Long commentId, DeleteCommentRequest requ Comment comment = loadCommentPort.findById(commentId) .orElseThrow(() -> new ApplicationException(CommentErrorCode.COMMENT_NOT_FOUND)); - if (checkCommenter(comment.getTask(), member)) { + if (Member.checkCommenter(comment.getTask(), member)) { // 삭제할 댓글이 첨부파일일 경우 if (!request.attachmentsToDelete().isEmpty()) { @@ -83,21 +83,4 @@ private List validateAndGetAttachments(List attachmentIdsToDel } return attachmentsOfTask; } - - public Boolean checkCommenter(Task task, Member member) { - // 일반 회원일 경우 => 요청자인지 확인 - // 담당자일 경우 => 처리자인지 확인 - if ((member.getMemberInfo().getRole() == MemberRole.ROLE_MANAGER) - && !(member.getMemberId() == task.getProcessor().getMemberId())) { - throw new ApplicationException(MemberErrorCode.NOT_A_COMMENTER); - } - - else if ((member.getMemberInfo().getRole() == MemberRole.ROLE_USER) - && !(member.getMemberId() == task.getRequester().getMemberId())) { - throw new ApplicationException(MemberErrorCode.NOT_A_COMMENTER); - } - else { - return true; - } - } } diff --git a/src/main/java/clap/server/application/service/comment/PostCommentService.java b/src/main/java/clap/server/application/service/comment/PostCommentService.java index 0d9ca297..54888cae 100644 --- a/src/main/java/clap/server/application/service/comment/PostCommentService.java +++ b/src/main/java/clap/server/application/service/comment/PostCommentService.java @@ -2,7 +2,6 @@ import clap.server.adapter.inbound.web.dto.task.PostAndEditCommentRequest; import clap.server.adapter.outbound.infrastructure.s3.S3UploadAdapter; -import clap.server.adapter.outbound.persistense.entity.member.constant.MemberRole; import clap.server.adapter.outbound.persistense.entity.task.constant.TaskHistoryType; import clap.server.application.mapper.AttachmentMapper; import clap.server.application.port.inbound.comment.PostCommentUsecase; @@ -18,8 +17,6 @@ import clap.server.domain.model.task.Comment; import clap.server.domain.model.task.Task; import clap.server.domain.model.task.TaskHistory; -import clap.server.exception.ApplicationException; -import clap.server.exception.code.MemberErrorCode; import lombok.RequiredArgsConstructor; import org.springframework.transaction.annotation.Transactional; import org.springframework.web.multipart.MultipartFile; @@ -45,7 +42,7 @@ public void save(Long userId, Long taskId, PostAndEditCommentRequest request) { // 일반 회원일 경우 => 요청자인지 확인 // 담당자일 경우 => 처리자인지 확인 - if (checkCommenter(task, member)) { + if (Member.checkCommenter(task, member)) { Comment comment = Comment.createComment(member, task, request.content()); Comment savedComment = commandCommentPort.saveComment(comment); @@ -60,7 +57,7 @@ public void saveCommentAttachment(Long userId, Long taskId, List Task task = taskService.findById(taskId); Member member = memberService.findActiveMember(userId); - if (checkCommenter(task, member)) { + if (Member.checkCommenter(task, member)) { Comment comment = Comment.createComment(member, task, "Attachment"); Comment savedComment = commandCommentPort.saveComment(comment); saveAttachment(files, task, savedComment); @@ -75,22 +72,4 @@ private void saveAttachment(List files, Task task, Comment commen List attachments = AttachmentMapper.toCommentAttachments(task, comment, files, fileUrls); commandAttachmentPort.saveAll(attachments); } - - public Boolean checkCommenter(Task task, Member member) { - // 일반 회원일 경우 => 요청자인지 확인 - // 담당자일 경우 => 처리자인지 확인 - if ((member.getMemberInfo().getRole() == MemberRole.ROLE_MANAGER) - && !(member.getMemberId() == task.getProcessor().getMemberId())) { - throw new ApplicationException(MemberErrorCode.NOT_A_COMMENTER); - } - - else if ((member.getMemberInfo().getRole() == MemberRole.ROLE_USER) - && !(member.getMemberId() == task.getRequester().getMemberId())) { - throw new ApplicationException(MemberErrorCode.NOT_A_COMMENTER); - } - else { - return true; - } - - } } diff --git a/src/main/java/clap/server/domain/model/member/Member.java b/src/main/java/clap/server/domain/model/member/Member.java index f3279b13..bce03b3e 100644 --- a/src/main/java/clap/server/domain/model/member/Member.java +++ b/src/main/java/clap/server/domain/model/member/Member.java @@ -1,7 +1,11 @@ package clap.server.domain.model.member; +import clap.server.adapter.outbound.persistense.entity.member.constant.MemberRole; import clap.server.adapter.outbound.persistense.entity.member.constant.MemberStatus; import clap.server.domain.model.common.BaseTime; +import clap.server.domain.model.task.Task; +import clap.server.exception.ApplicationException; +import clap.server.exception.code.MemberErrorCode; import lombok.*; import lombok.experimental.SuperBuilder; @@ -78,4 +82,22 @@ public void updateMemberInfo(String name, Boolean agitNotificationEnabled, Boole public void setStatusDeleted() { this.status = MemberStatus.DELETED; } + + public static Boolean checkCommenter(Task task, Member member) { + // 일반 회원일 경우 => 요청자인지 확인 + // 담당자일 경우 => 처리자인지 확인 + if ((member.getMemberInfo().getRole() == MemberRole.ROLE_MANAGER) + && !(member.getMemberId() == task.getProcessor().getMemberId())) { + throw new ApplicationException(MemberErrorCode.NOT_A_COMMENTER); + } + + else if ((member.getMemberInfo().getRole() == MemberRole.ROLE_USER) + && !(member.getMemberId() == task.getRequester().getMemberId())) { + throw new ApplicationException(MemberErrorCode.NOT_A_COMMENTER); + } + else { + return true; + } + + } } From 623b32371237172d040de55d6980dfc4337cfb1d Mon Sep 17 00:00:00 2001 From: andrew Date: Fri, 31 Jan 2025 18:50:54 +0900 Subject: [PATCH 2/3] =?UTF-8?q?CLAP-185=20fix:=20@SQLDelete=20annotation?= =?UTF-8?q?=20=EC=A0=81=EC=9A=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../outbound/persistense/CommentPersistenceAdapter.java | 5 +++++ .../outbound/persistense/entity/task/CommentEntity.java | 4 +++- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/src/main/java/clap/server/adapter/outbound/persistense/CommentPersistenceAdapter.java b/src/main/java/clap/server/adapter/outbound/persistense/CommentPersistenceAdapter.java index aec21821..77cbf428 100644 --- a/src/main/java/clap/server/adapter/outbound/persistense/CommentPersistenceAdapter.java +++ b/src/main/java/clap/server/adapter/outbound/persistense/CommentPersistenceAdapter.java @@ -29,4 +29,9 @@ public Comment saveComment(Comment comment) { CommentEntity commentEntity = commentRepository.save(commentPersistenceMapper.toEntity(comment)); return commentPersistenceMapper.toDomain(commentEntity); } + + @Override + public void deleteComment(Comment comment) { + commentRepository.delete(commentPersistenceMapper.toEntity(comment)); + } } diff --git a/src/main/java/clap/server/adapter/outbound/persistense/entity/task/CommentEntity.java b/src/main/java/clap/server/adapter/outbound/persistense/entity/task/CommentEntity.java index 1b508c50..ba3ef2e8 100644 --- a/src/main/java/clap/server/adapter/outbound/persistense/entity/task/CommentEntity.java +++ b/src/main/java/clap/server/adapter/outbound/persistense/entity/task/CommentEntity.java @@ -7,12 +7,14 @@ import lombok.Getter; import lombok.NoArgsConstructor; import lombok.experimental.SuperBuilder; +import org.hibernate.annotations.SQLDelete; @Entity @Table(name = "comment") @Getter @SuperBuilder @NoArgsConstructor(access = AccessLevel.PROTECTED) +@SQLDelete(sql = "UPDATE Comment SET is_Deleted = true WHERE comment_id = ?") public class CommentEntity extends BaseTimeEntity { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @@ -34,5 +36,5 @@ public class CommentEntity extends BaseTimeEntity { private boolean isModified; @Column(name="is_deleted", nullable = false) - private boolean isDeleted; + private boolean isDeleted = Boolean.FALSE; } From a2514bd39363db84447e78167397e706d040746e Mon Sep 17 00:00:00 2001 From: andrew Date: Fri, 31 Jan 2025 18:51:48 +0900 Subject: [PATCH 3/3] =?UTF-8?q?CLAP-185=20fix:=20=EB=8C=93=EA=B8=80=20?= =?UTF-8?q?=EC=82=AD=EC=A0=9C=20logic=20=EB=A6=AC=ED=8C=A9=ED=86=A0?= =?UTF-8?q?=EB=A7=81=20=EC=A7=84=ED=96=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../web/comment/CommandCommentController.java | 6 ++-- .../web/dto/task/DeleteCommentRequest.java | 13 ------- .../AttachmentPersistenceAdapter.java | 13 ++++--- .../repository/task/AttachmentRepository.java | 4 ++- .../comment/CommandCommentUsecase.java | 5 +-- .../outbound/task/CommandCommentPort.java | 2 ++ .../outbound/task/LoadAttachmentPort.java | 4 ++- .../comment/CommandCommentService.java | 36 +++++-------------- .../server/domain/model/task/Comment.java | 1 + .../exception/code/CommentErrorCode.java | 4 ++- 10 files changed, 32 insertions(+), 56 deletions(-) delete mode 100644 src/main/java/clap/server/adapter/inbound/web/dto/task/DeleteCommentRequest.java diff --git a/src/main/java/clap/server/adapter/inbound/web/comment/CommandCommentController.java b/src/main/java/clap/server/adapter/inbound/web/comment/CommandCommentController.java index 144203df..e3768092 100644 --- a/src/main/java/clap/server/adapter/inbound/web/comment/CommandCommentController.java +++ b/src/main/java/clap/server/adapter/inbound/web/comment/CommandCommentController.java @@ -1,7 +1,6 @@ package clap.server.adapter.inbound.web.comment; import clap.server.adapter.inbound.security.SecurityUserDetails; -import clap.server.adapter.inbound.web.dto.task.DeleteCommentRequest; import clap.server.adapter.inbound.web.dto.task.PostAndEditCommentRequest; import clap.server.application.port.inbound.comment.CommandCommentUsecase; import clap.server.common.annotation.architecture.WebAdapter; @@ -40,9 +39,8 @@ public void editComment( @Secured({"ROLE_MANAGER", "ROLE_USER"}) public void deleteComment( @AuthenticationPrincipal SecurityUserDetails userInfo, - @PathVariable Long commentId, - @RequestBody DeleteCommentRequest request) { - commandCommentUsecase.deleteComment(userInfo.getUserId(), commentId, request); + @PathVariable Long commentId) { + commandCommentUsecase.deleteComment(userInfo.getUserId(), commentId); } } diff --git a/src/main/java/clap/server/adapter/inbound/web/dto/task/DeleteCommentRequest.java b/src/main/java/clap/server/adapter/inbound/web/dto/task/DeleteCommentRequest.java deleted file mode 100644 index 05c717a6..00000000 --- a/src/main/java/clap/server/adapter/inbound/web/dto/task/DeleteCommentRequest.java +++ /dev/null @@ -1,13 +0,0 @@ -package clap.server.adapter.inbound.web.dto.task; - -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotNull; - -import java.util.List; - -public record DeleteCommentRequest( - @Schema(description = "삭제할 파일 ID 목록, 없을 경우 emptylist 전송") - @NotNull - List attachmentsToDelete -) { -} diff --git a/src/main/java/clap/server/adapter/outbound/persistense/AttachmentPersistenceAdapter.java b/src/main/java/clap/server/adapter/outbound/persistense/AttachmentPersistenceAdapter.java index 41ee5492..5c6c9d2e 100644 --- a/src/main/java/clap/server/adapter/outbound/persistense/AttachmentPersistenceAdapter.java +++ b/src/main/java/clap/server/adapter/outbound/persistense/AttachmentPersistenceAdapter.java @@ -54,11 +54,9 @@ public List findAllByTaskIdAndCommentIsNullAndAttachmentId(final Lon } @Override - public List findAllyByTaskIdAndCommentIdAndAttachmentId(Long taskId, Long commentId, List attachmentIds) { - List attachmentEntities = attachmentRepository.findActiveAttachmentsByTask_TaskIdAndComment_CommentIdAndAttachmentIdIn(taskId, commentId, attachmentIds); - return attachmentEntities.stream() - .map(attachmentPersistenceMapper::toDomain) - .collect(Collectors.toList()); + public Optional findByCommentId(Long commentId) { + Optional attachmentEntity = attachmentRepository.findByComment_CommentIdAndIsDeletedFalse(commentId); + return attachmentEntity.map(attachmentPersistenceMapper::toDomain); } @Override @@ -68,4 +66,9 @@ public List findAllByTaskIdAndCommentIsNotNull(final Long taskId) { .map(attachmentPersistenceMapper::toDomain) .collect(Collectors.toList()); } + + @Override + public boolean exitsByCommentId(Long commentId) { + return attachmentRepository.existsByComment_CommentId(commentId); + } } diff --git a/src/main/java/clap/server/adapter/outbound/persistense/repository/task/AttachmentRepository.java b/src/main/java/clap/server/adapter/outbound/persistense/repository/task/AttachmentRepository.java index f44f96e8..9e8d9336 100644 --- a/src/main/java/clap/server/adapter/outbound/persistense/repository/task/AttachmentRepository.java +++ b/src/main/java/clap/server/adapter/outbound/persistense/repository/task/AttachmentRepository.java @@ -4,11 +4,13 @@ import org.springframework.stereotype.Repository; import java.util.List; +import java.util.Optional; @Repository public interface AttachmentRepository extends JpaRepository { List findAllByTask_TaskIdAndCommentIsNullAndIsDeletedIsFalse(Long taskId); List findAllByTask_TaskIdAndCommentIsNullAndIsDeletedIsFalseAndAttachmentIdIn(Long task_taskId, List attachmentId); - List findActiveAttachmentsByTask_TaskIdAndComment_CommentIdAndAttachmentIdIn(Long task_taskId, Long comment_commentId, List attachmentIds); + Optional findByComment_CommentIdAndIsDeletedFalse(Long commentId); + boolean existsByComment_CommentId(Long commentId); List findAllByTask_TaskIdAndCommentIsNotNullAndIsDeletedIsFalse(Long taskId); } \ No newline at end of file diff --git a/src/main/java/clap/server/application/port/inbound/comment/CommandCommentUsecase.java b/src/main/java/clap/server/application/port/inbound/comment/CommandCommentUsecase.java index 4fcd653f..6c3e2238 100644 --- a/src/main/java/clap/server/application/port/inbound/comment/CommandCommentUsecase.java +++ b/src/main/java/clap/server/application/port/inbound/comment/CommandCommentUsecase.java @@ -1,13 +1,10 @@ package clap.server.application.port.inbound.comment; -import clap.server.adapter.inbound.web.dto.task.DeleteCommentRequest; import clap.server.adapter.inbound.web.dto.task.PostAndEditCommentRequest; -import java.util.List; - public interface CommandCommentUsecase { void updateComment(Long userId, Long commentId, PostAndEditCommentRequest request); - void deleteComment(Long userId, Long commentId, DeleteCommentRequest request); + void deleteComment(Long userId, Long commentId); } diff --git a/src/main/java/clap/server/application/port/outbound/task/CommandCommentPort.java b/src/main/java/clap/server/application/port/outbound/task/CommandCommentPort.java index 834732f3..55c74d1b 100644 --- a/src/main/java/clap/server/application/port/outbound/task/CommandCommentPort.java +++ b/src/main/java/clap/server/application/port/outbound/task/CommandCommentPort.java @@ -5,4 +5,6 @@ public interface CommandCommentPort { Comment saveComment(Comment comment); + + void deleteComment(Comment comment); } diff --git a/src/main/java/clap/server/application/port/outbound/task/LoadAttachmentPort.java b/src/main/java/clap/server/application/port/outbound/task/LoadAttachmentPort.java index 023f4db6..127c4fad 100644 --- a/src/main/java/clap/server/application/port/outbound/task/LoadAttachmentPort.java +++ b/src/main/java/clap/server/application/port/outbound/task/LoadAttachmentPort.java @@ -3,11 +3,13 @@ import clap.server.domain.model.task.Attachment; import java.util.List; +import java.util.Optional; public interface LoadAttachmentPort { List findAllByTaskIdAndCommentIsNull(Long taskId); List findAllByTaskIdAndCommentIsNullAndAttachmentId(Long taskId, List attachmentIds); - List findAllyByTaskIdAndCommentIdAndAttachmentId(Long taskId, Long commentId, List attachmentIds); + Optional findByCommentId(Long commentId); List findAllByTaskIdAndCommentIsNotNull(Long taskId); + boolean exitsByCommentId(Long commentId); } diff --git a/src/main/java/clap/server/application/service/comment/CommandCommentService.java b/src/main/java/clap/server/application/service/comment/CommandCommentService.java index 9b8ed384..b0c3bd40 100644 --- a/src/main/java/clap/server/application/service/comment/CommandCommentService.java +++ b/src/main/java/clap/server/application/service/comment/CommandCommentService.java @@ -1,8 +1,6 @@ package clap.server.application.service.comment; -import clap.server.adapter.inbound.web.dto.task.DeleteCommentRequest; import clap.server.adapter.inbound.web.dto.task.PostAndEditCommentRequest; -import clap.server.adapter.outbound.persistense.entity.member.constant.MemberRole; import clap.server.application.port.inbound.comment.CommandCommentUsecase; import clap.server.application.port.inbound.domain.MemberService; import clap.server.application.port.outbound.task.CommandAttachmentPort; @@ -13,16 +11,11 @@ import clap.server.domain.model.member.Member; import clap.server.domain.model.task.Attachment; import clap.server.domain.model.task.Comment; -import clap.server.domain.model.task.Task; import clap.server.exception.ApplicationException; import clap.server.exception.code.CommentErrorCode; -import clap.server.exception.code.MemberErrorCode; -import clap.server.exception.code.TaskErrorCode; import lombok.RequiredArgsConstructor; import org.springframework.transaction.annotation.Transactional; -import java.util.List; - @ApplicationService @RequiredArgsConstructor public class CommandCommentService implements CommandCommentUsecase { @@ -51,7 +44,7 @@ public void updateComment(Long userId, Long commentId, PostAndEditCommentRequest @Transactional @Override - public void deleteComment(Long userId, Long commentId, DeleteCommentRequest request) { + public void deleteComment(Long userId, Long commentId) { Member member = memberService.findActiveMember(userId); @@ -59,28 +52,17 @@ public void deleteComment(Long userId, Long commentId, DeleteCommentRequest requ .orElseThrow(() -> new ApplicationException(CommentErrorCode.COMMENT_NOT_FOUND)); if (Member.checkCommenter(comment.getTask(), member)) { - - // 삭제할 댓글이 첨부파일일 경우 - if (!request.attachmentsToDelete().isEmpty()) { - deleteAttachments(request.attachmentsToDelete(), comment.getTask(), comment.getCommentId()); + if (loadAttachmentPort.exitsByCommentId(commentId)) { + deleteAttachments(commentId); } - - comment.softDelete(); - commandCommentPort.saveComment(comment); + commandCommentPort.deleteComment(comment); }; } - private void deleteAttachments(List attachmentIdsToDelete, Task task, Long commentId) { - List attachmentsToDelete = validateAndGetAttachments(attachmentIdsToDelete, task, commentId); - attachmentsToDelete.forEach(Attachment::softDelete); - commandAttachmentPort.saveAll(attachmentsToDelete); - } - - private List validateAndGetAttachments(List attachmentIdsToDelete, Task task, Long commentId) { - List attachmentsOfTask = loadAttachmentPort.findAllyByTaskIdAndCommentIdAndAttachmentId(task.getTaskId(), commentId, attachmentIdsToDelete); - if (attachmentsOfTask.size() != attachmentIdsToDelete.size()) { - throw new ApplicationException(TaskErrorCode.TASK_ATTACHMENT_NOT_FOUND); - } - return attachmentsOfTask; + private void deleteAttachments(Long commentId) { + Attachment attachment = loadAttachmentPort.findByCommentId(commentId) + .orElseThrow(() -> new ApplicationException(CommentErrorCode.COMMENT_ATTACHMENT_NOT_FOUND)); + attachment.softDelete(); + commandAttachmentPort.save(attachment); } } diff --git a/src/main/java/clap/server/domain/model/task/Comment.java b/src/main/java/clap/server/domain/model/task/Comment.java index 25ce0b46..fda3fe4a 100644 --- a/src/main/java/clap/server/domain/model/task/Comment.java +++ b/src/main/java/clap/server/domain/model/task/Comment.java @@ -7,6 +7,7 @@ import lombok.Getter; import lombok.NoArgsConstructor; import lombok.experimental.SuperBuilder; +import org.hibernate.annotations.SQLDelete; @Getter @SuperBuilder diff --git a/src/main/java/clap/server/exception/code/CommentErrorCode.java b/src/main/java/clap/server/exception/code/CommentErrorCode.java index 97aa1baf..1f74a967 100644 --- a/src/main/java/clap/server/exception/code/CommentErrorCode.java +++ b/src/main/java/clap/server/exception/code/CommentErrorCode.java @@ -8,7 +8,9 @@ @AllArgsConstructor public enum CommentErrorCode implements BaseErrorCode { - COMMENT_NOT_FOUND(HttpStatus.NOT_FOUND, "COMMENT_001", "댓글을 찾을 수 없습니다."); + COMMENT_NOT_FOUND(HttpStatus.NOT_FOUND, "COMMENT_001", "댓글을 찾을 수 없습니다."), + COMMENT_ATTACHMENT_NOT_FOUND(HttpStatus.NOT_FOUND, "COMMENT_002", "댓글 첨부파일을 찾을 수 없습니다.") + ; private final HttpStatus httpStatus;