[댓글] 댓글 삭제
2023. 1. 28. 13:01ㆍ프로젝트/라이프 챌린지
728x90
SMALL
댓글 삭제 api를 만들자
CommentController
// 댓글 삭제
@DeleteMapping("/comment/delete/{comment_id}")
public ResponseEntity<ResponseBody> commentDelete(HttpServletRequest request,@PathVariable Long comment_id){
log.info("댓글 삭제 - 댓글 삭제 유저 : {}, 삭제될 댓글 id : {}", jwtTokenProvider.getMemberFromAuthentication().getNickname(), comment_id);
return commentService.commentDelete(request, comment_id);
}
댓글 삭제 api를 만들어준다.
- 삭제 작업이 이루어질 것이기 때문에 DeleteMapping 타입 메소드로 만들어준다.
- 인자값은 토큰이 저장될 HttpServletRequest, @PathVariable로 메소들 주소로 직접 넘겨받은 Comment id 가 될 것이다.
CommentService
// 댓글 삭제
@Transactional
public ResponseEntity<ResponseBody> commentDelete(HttpServletRequest request, Long comment_id){
// 유저 검증
Member auth_member = checkAuthentication(request);
// 댓글 작성자가 아니라면 댓글을 삭제할 수 없음.
if(queryFactory
.selectFrom(comment)
.where(comment.comment_id.eq(comment_id).and(comment.nickname.eq(auth_member.getNickname())))
.fetchOne() == null){
return new ResponseEntity<>(new ResponseBody(StatusCode.NOT_MATCH_COMMENT_WRITER.getStatusCode(), StatusCode.NOT_MATCH_COMMENT_WRITER.getStatus(), null), HttpStatus.BAD_REQUEST);
}
// 댓글 삭제 처리
queryFactory
.delete(comment)
.where(comment.comment_id.eq(comment_id))
.execute();
return new ResponseEntity<>(new ResponseBody(StatusCode.OK.getStatusCode(), StatusCode.OK.getStatus(), "댓글이 삭제 되었습니다."), HttpStatus.OK);
}
댓글이 삭제될 Service 로직 수행 메소드이다.
- checkAuthentication(request) 로 검증된 Member 객체를 받아온다.
- 만약 삭제하고자하는 댓글이 현 유저가 작성한 댓글이 아니라면 삭제될 수 없도록 에러 처리를 해준다.
- 작성자가 맞다면 Delete문을 사용하여 삭제를 진행해준다.
- 삭제가 정상적으로 진행이 되었다면 "댓글이 삭제 되었습니다." 라는 문구가 나올 수 있도록 한다.
포스트맨으로 확인해보자.
댓글이 정상적으로 삭제된 것을 확인할 수 있다.
(Header에 토큰 필요!)
728x90
반응형
LIST
'프로젝트 > 라이프 챌린지' 카테고리의 다른 글
라이프 챌린지 프로젝트 일시 중단 (0) | 2023.05.21 |
---|---|
[뷰 구현 (1)] 초기 뷰 페이지 구현 (프로토타입) (0) | 2023.02.12 |
[댓글] 댓글 수정 (0) | 2023.01.28 |
[댓글] 댓글 작성 (0) | 2023.01.28 |
[게시판] 게시글 좋아요 / 좋아요 취소 (0) | 2023.01.25 |