102DAYS) [Main-Project] cascade 설정, ReviewLike POST 메서드로 Like 추가/제거 기능, BE 코드 합치기

nacSeo (낙서)·2023년 3월 15일
0

오늘은 오전 회의를 생략하고 각자 작업을 진행하였다.
우선, review delete시 reviewLike가 같이 delete되지 않아 review entity쪽 연관관계 매핑 코드에 cascade 설정을 추가해주었다.

	@OneToMany(mappedBy = "review", cascade = CascadeType.ALL)
    private List<ReviewLike> reviewLikes;

그리고 팀원들과 코드에 대한 리뷰를 진행하였는데 기존 reviewLike를 Post 메서드로 Like를 추가하고, Delete로 Like를 제거하는 로직을 Post 메서드 1개를 통해 ON/OFF 방식으로 리팩토링하기로 결정했다.
따라서, 코드 수정이 필요했다.

	@PostMapping
    public ResponseEntity createReviewLike(@RequestBody ReviewLikeDto reviewLikeDto, Principal principal) {
        Member member = memberService.findLoginMemberByEmail(principal.getName());
        reviewLikeDto.setMember(member);

        Long reviewId = reviewLikeDto.getReviewId();
        ReviewLike existingReviewLike = reviewLikeService.findByMemberIdAndReviewId(member.getMemberId(), reviewId);

        if(existingReviewLike != null) {
			reviewLikeService.deleteReviewLike(existingReviewLike.getId(), member.getMemberId());
            return new ResponseEntity<>(HttpStatus.NO_CONTENT);
        } else {
            ReviewLike reviewLike = mapper.reviewLikeDtoToReviewLike(reviewLikeDto);
            ReviewLike response = reviewLikeService.addReviewLike(reviewLike);
            return new ResponseEntity<>(mapper.ReviewLikeToReviewLikeResponseDto(response), HttpStatus.CREATED);
        }

다음과 같이 Controller 클래스에서 reviewLike Post 메서드 로직을 수정하고, Delete 메서드를 제거해줬다.

	ReviewLike findByMember_memberIdAndReviewId(Long memberId, Long reviewId);

Repository에 memberId와 reviewId를 찾을 수 있는 메서드를 만들어주고,

	public ReviewLike findByMemberIdAndReviewId(Long memberId, Long reviewId) {
        return reviewLikeRepository.findByMember_memberIdAndReviewId(memberId, reviewId);
    }

Service 클래스에서 해당 메서드를 이용해 Controller단에서 사용할 수 있도록 코드를 짜줬다.

간단히 코드를 소개하자면 해당 memberId, 해당 reviewId가 있다는 로직을 짜주고, 없으면 Post를 통해 Like를 삽입시키고 이미 존재한다면 Like를 삭제시키는 로직이다.

코드 리뷰를 토대로 로직을 수정해준 뒤, 첫 배포작업을 하기 위해 BE 코드를 dev_be브랜치에 합치는 작업을 진행해주었다.

내일부터 해당 합친 코드로부터 멘토링 시간에 피드백받았던 Composite 패턴으로 디렉토리 구조를 수정 후, 각자 코드를 가져가서 필요한 기능에 따른 브랜치를 파서 작업을 다시 시작하기로!!!

profile
백엔드 개발자 김창하입니다 🙇‍♂️

0개의 댓글