1. 서비스
// id 로 댓글 업데이트
CommentDto updateCommentById(Long postId, CommentDto commentRequest);
2. 서비스 구현
@Override
public CommentDto updateCommentById(Long postId, Long commentId, CommentDto commentDto) {
//ID 로 포스트 찾기 못찾을 경우 예외처리
Post post = postRepository.findById(postId).orElseThrow(() -> new ResourceNotFoundException("Post", "id", postId));
//ID 로 댓글 찾기 못찾을 경우 예외
Comment comment = commentRepository.findById(commentId).orElseThrow(() -> new ResourceNotFoundException("Comment", "id", commentId));
if(!comment.getPost().getId().equals(post.getId())) {
throw new BlogAPIException(HttpStatus.BAD_REQUEST, "해당 포스트의 댓글이 아닙니다.");
}
comment.setName(commentDto.getName());
comment.setEmail(commentDto.getEmail());
comment.setBody(commentDto.getBody());
Comment updatedComment = commentRepository.save(comment);
return mapToDTO(updatedComment);
}
컨트롤러
@PutMapping("/posts/{postId}/comments/{commentId}")
public ResponseEntity<CommentDto> getCommentsByPostID(
@PathVariable Long postId, @PathVariable Long commentId,
@RequestBody CommentDto commentDto
){
return new ResponseEntity<>(commentService.updateCommentById(postId, commentId, commentDto), HttpStatus.OK) ;
}
테스트