diff --git a/src/main/java/com/example/be/apiPayload/code/status/ErrorStatus.java b/src/main/java/com/example/be/apiPayload/code/status/ErrorStatus.java index d3da085..12afa17 100644 --- a/src/main/java/com/example/be/apiPayload/code/status/ErrorStatus.java +++ b/src/main/java/com/example/be/apiPayload/code/status/ErrorStatus.java @@ -29,7 +29,8 @@ public enum ErrorStatus implements BaseErrorCode { _NOT_USER_POST(HttpStatus.NOT_FOUND, "POST402", "해당 유저의 게시글이 아닙니다."), //댓글 관련 에러 - _NOT_FOUND_COMMENT(HttpStatus.NOT_FOUND, "COMMENT404", "해당 댓글을 찾을 수 없습니다."); + _NOT_FOUND_COMMENT(HttpStatus.NOT_FOUND, "COMMENT401", "해당 댓글을 찾을 수 없습니다."), + _NOT_USER_COMMENT(HttpStatus.NOT_FOUND, "COMMENT402", "해당 유저의 댓글이 아닙니다."); private final HttpStatus httpStatus; private final String code; diff --git a/src/main/java/com/example/be/repository/CommentRepository.java b/src/main/java/com/example/be/repository/CommentRepository.java index 20e1ad0..2739408 100644 --- a/src/main/java/com/example/be/repository/CommentRepository.java +++ b/src/main/java/com/example/be/repository/CommentRepository.java @@ -4,6 +4,9 @@ import com.example.be.domain.Post; import org.springframework.data.jpa.repository.JpaRepository; +import java.util.Optional; + public interface CommentRepository extends JpaRepository { + Optional findByIdAndUserId(Long id, Long userId); } diff --git a/src/main/java/com/example/be/service/CommentServiceImpl.java b/src/main/java/com/example/be/service/CommentServiceImpl.java index ec324bf..ac9ca44 100644 --- a/src/main/java/com/example/be/service/CommentServiceImpl.java +++ b/src/main/java/com/example/be/service/CommentServiceImpl.java @@ -70,4 +70,17 @@ public CommonDTO.IsSuccessDTO createComment(CommentDTO.CommentRequestDTO request commentRepository.save(comment); return CommonDTO.IsSuccessDTO.builder().isSuccess(true).build(); } + + public CommonDTO.IsSuccessDTO deleteComment(Long commentId, HttpServletRequest request) { + User user= getUserFromRequest(request); + + Comment comment = commentRepository.findById(commentId).orElseThrow(()-> + new CommentHandler(ErrorStatus._NOT_FOUND_COMMENT)); + + commentRepository.findByIdAndUserId(commentId, user.getId()).orElseThrow(() -> + new CommentHandler(ErrorStatus._NOT_USER_COMMENT)); + + commentRepository.delete(comment); + return CommonDTO.IsSuccessDTO.builder().isSuccess(true).build(); + } } diff --git a/src/main/java/com/example/be/web/controller/CommentController.java b/src/main/java/com/example/be/web/controller/CommentController.java index de4c5d2..8464953 100644 --- a/src/main/java/com/example/be/web/controller/CommentController.java +++ b/src/main/java/com/example/be/web/controller/CommentController.java @@ -35,4 +35,12 @@ public ApiResponse toggleCommentLike( HttpServletRequest request) { return ApiResponse.onSuccess(commentLikeService.toggleCommentLike(commentId, request)); } + + @PostMapping("/{commentId}/delete") + @Operation(summary = "댓글 삭제 API", description = "댓글을 삭제합니다.") + public ApiResponse deleteComment( + @Parameter(description = "댓글 ID") @PathVariable Long commentId, + HttpServletRequest request) { + return ApiResponse.onSuccess(commentService.deleteComment(commentId, request)); + } }