음식점 별 리뷰의 마지막 기능인 리뷰 삭제 기능이다.
@DeleteMapping 이용
먼저 resIdx와 userIdx를 이용해 유저가 해당 음식점에 대해 작성한 리뷰가 존재하는지 확인한다.
작성한 리뷰가 존재한다면 Repository에서 기본으로 제공하는 delete를 이용하여 리뷰를 삭제한다.
작성한 리뷰가 존재하지 않는다면 작성한 리뷰가 없다는 문자열을 반환한다.
리뷰생성 기능을 구현할 때 만들어둔 findReviewByResIdxAndUserIdx를 이용해 유저가 해당 식당에 작성한 리뷰가 존재하는지 확인한다.
null이라면 작성한 리뷰가 없다는 뜻이므로 실행이 되지 않는다.
null이 아니라면 작성한 리뷰가 존재한다는 뜻이므로 repository.delete를 이용하여 삭제한다.
@RestController
@RequiredArgsConstructor
@RequestMapping("/v1/vegan-res")
public class ReviewJpaController {
@Autowired
private ReviewRepository reviewRepository;
// 키워드 리뷰 삭제
@DeleteMapping("/{resIdx}/review/{userIdx}")
public String deleteReview(@PathVariable int resIdx, @PathVariable int userIdx){
Review review=reviewRepository.findReviewByResIdxAndUserIdx(resIdx, userIdx);
if(review==null){
return "작성한 리뷰가 없습니다.";
}
else{
reviewRepository.delete(review);
return "리뷰가 삭제되었습니다.";
}
}
}
// resIdx, userIdx로 리뷰 찾기(return Review)
@Query(value="select rev from review rev where rev.resIdx= :resIdx and rev.userIdx= :userIdx")
Review findReviewByResIdxAndUserIdx(Integer resIdx, Integer userIdx);