[클론 코딩] 네이버 카페 - 댓글 수정
2024. 6. 10. 01:24ㆍProject/Naver Cafe
네이버 카페는 댓글 수정시 댓글의 '본문'을 수정할 수 있으며, 변경된 닉네임은 적용이 되지 않는다. 또한 작성일 정보가 수정일 정보로 바뀌어 사용자에게 제공된다.
Comment
package CloneCoding.NaverCafe.domain.comment;
@Entity
@Table(name = "COMMENT")
@Getter
@Builder
@NoArgsConstructor(access = AccessLevel.PROTECTED)
@AllArgsConstructor
public class Comment {
public void update(String body, LocalDateTime updateAt) {
this.body = body;
this.updateAt = updateAt;
}
}
- update() : Comment 객체의 body, updateAt 정보를 파라미터 값으로 수정하는 메서드
CommentController
package CloneCoding.NaverCafe.domain.comment.controller;
@Slf4j
@RestController
@RequiredArgsConstructor
@RequestMapping("/cafe/{cafe_url}")
public class CommentController {
private final CommentService commentService;
@PutMapping("/comment/{comment_id}")
public String updateComment(@PathVariable("cafe_url") String cafeUrl,
@PathVariable("comment_id") Long commentId,
@RequestBody @Valid RequestWriteComment request,
@RequestHeader("Authorization") String token) {
log.info("댓글(답글) 수정 요청");
return commentService.updateComment(cafeUrl, commentId, request, token);
}
}
- updateComment() : 카페 url, 댓글 id, 요청 정보, 토큰 정보로 CommentService의 updateComment()를 호출 결과 메시지를 반환
CommentServiceImpl
package CloneCoding.NaverCafe.domain.comment.service;
import static CloneCoding.NaverCafe.message.SystemMessage.UPDATE_COMMENT_COMPLETE;
import static CloneCoding.NaverCafe.message.SystemMessage.WRITE_COMMENT_COMPLETE;
@Service
@RequiredArgsConstructor
public class CommentServiceImpl implements CommentService {
private final CommentRepository commentRepository;
private final CafeRepository cafeRepository;
private final CafeMemberRepository cafeMemberRepository;
private final NormalRepository normalRepository;
private final AesUtil aesUtil;
@Override
public String updateComment(String cafeUrl, Long commentId, RequestWriteComment request,
String token) {
checkCafeMember(cafeUrl, token);
Comment comment = commentRepository.findById(commentId)
.orElseThrow(() -> new NoSuchElementException("댓글 정보를 찾을 수 없습니다."));
comment.update(request.getBody(), LocalDateTime.now());
commentRepository.save(comment);
return UPDATE_COMMENT_COMPLETE.getMessage();
}
private CafeMember checkCafeMember(String url, String token) {
String accountId = aesUtil.aesDecode(token);
Cafe findCafe = cafeRepository.findByUrl(url);
return cafeMemberRepository.findByAccountId(findCafe, accountId);
}
}
- updateComment() : Comment 객체의 body와 createAt 정보를 수정하고 엔티티를 저장, 결과 메시지를 반환
API TEST
댓글 수정 요청에 대한 API 테스트 결과이다. Comment 엔티티의 body와 updateAt 정보가 잘 수정된 것을 확인할 수 있다.
'Project > Naver Cafe' 카테고리의 다른 글
[클론 코딩] 네이버 카페 - 댓글 삭제 (0) | 2024.06.10 |
---|---|
[클론 코딩] 네이버 카페 - 댓글 읽기 (0) | 2024.06.09 |
[클론 코딩] 네이버 카페 - 답글 작성 (0) | 2024.06.08 |
[클론 코딩] 네이버 카페 - 댓글 작성 (0) | 2024.06.08 |
[클론 코딩] 네이버 카페 - 게시글 '좋아요' 등록, 취소 (0) | 2024.06.06 |