🍐 [이화톤] 배울림꽃 - 이화 청원 프로그램 리팩토링( 4 ) 청원 투표, 투표 취소 API
2024. 9. 22. 00:42ㆍ개발/🍐 배울림꽃
구현할 거
✅ 청원 투표하기
✅ 청원 투표 취소하기
PostEntity / MemberEntity
@OneToMany(mappedBy = "post", cascade = CascadeType.ALL)
private List<Vote> voteList;
@OneToMany(mappedBy = "member", cascade = CascadeType.ALL)
private List<Vote> voteList;
수정한 부분
- @OneToMany 설정
: CascadeType.ALL -> Post Entity에 변화 생겼을 때 Vote에 반영되도록
PostService
// 게시물 투표
public String enableVote(Long postId) {
Long memberId = memberService.getCurrentMemberId();
Member member = memberRepository.findByMemberId(memberId);
Post post = findById(postId);
post.setVoteCount(post.getVoteCount()+1);
Vote vote = Vote.builder()
.member(member)
.post(post)
.build();
voteRepository.save(vote);
return postId + "Voted";
}
// 게시물 투표 취소
public String disableVote(Long postId) {
Long memberId = memberService.getCurrentMemberId();
Member member = memberRepository.findByMemberId(memberId);
Post post = findById(postId);
post.setVoteCount(post.getVoteCount()-1);
voteRepository.deleteByMemberAndPost(member, post);
return postId + "Vote Cancelled";
}
Vote 엔티티는 Member, Post와 각각 일대다로 연결되어 있음
-> Vote 생성할 때(투표하기 로직) Member, Post 엔티티 넣어줌
: Member는 한나가 구현해준 회원 관리 로직 - 현재 사용자 찾아서 삽입
-> Vote 삭제할 때(투표 취소 로직) Vote의 레코드 하나를 삭제함
: Vote의 특정 레코드를 Post와 Member로 찾아서 삭제함
PostController
@PutMapping("/{postId}/vote/enable")
public String enableVote(@PathVariable Long postId) {
return postService.enableVote(postId);
}
@PutMapping("/{postId}/vote/enable")
public String disableVote(@PathVariable Long postId) {
return postService.disableVote(postId);
}
투표하기 / 투표 취소 Mapping
VoteRepository
public interface VoteRepository extends JpaRepository<Long, Vote> {
Vote deleteByMemberAndPost(Member member, Post post);
}
투표 취소할 경우 Vote table에서 해당 레코드가 삭제되어야 함
-> Member, Post 엔티티로 Vote 레코드 찾기 위해 deleteByMemberAndPost 메서드 생성
아직 테스트 전....!
헤더 어떻게 넣는지 물어봐야 됨..!
나도 회원관리쪽 개발 공부해야겠당!!
'개발 > 🍐 배울림꽃' 카테고리의 다른 글
🍐 [이화톤] 배울림꽃 - 이화 청원 프로그램 리팩토링( 3 ) 청원 - 이메일, 정보 동의 / 청원 내용 기입 API 분리 (0) | 2024.09.21 |
---|---|
🍐 [이화톤] 배울림꽃 - 이화 청원 프로그램 리팩토링( 2 ) 청원 게시, 상세 조회, 상태 변화 자동화 (2) | 2024.08.31 |
🍐 [이화톤] 배울림꽃 - 이화 청원 프로그램 리팩토링( 1 ) (0) | 2024.08.31 |
🍐 [이화톤] 배울림꽃 - 이화 청원 프로그램 (0) | 2024.08.03 |