Skipalong's tistory
231206 TIL - 좋아요기능 본문
오늘도 감기에 걸려서 제정신이 아닌 상태로 코딩을 한 것 같다. 그래도 게시글/댓글에 좋아요를 추가하는 기능은 구현했다.
우선 게시글 좋아요와 댓글 좋아요 엔티티를 만들고 각각에 맞게 컨트롤러, 서비스, 레포지토리를 만들어 주었다. 또 상황에 맞는 에러코드를 추가해서 예외처리까지 해주었다.
엔티티는 이런식으로 ManyToOne 으로 User와 Post를 연관시켰고 빌더 패턴으로 생성자를 만들어 보았다.
컨트롤러에는 @PathVariable로 postId를 받아오고 @AuthenticationPrincipal 으로 User정보를 받아와서 Service단에 메서드를 구현한 뒤 ResponseEntity로 반환을 하였다.
받아온 PostId로 PostRepository에서 Post를 찾아오고 받아온 User정보로 UserRepository에서 User를 찾아온 뒤 그것을 바탕으로 PostLike 객체를 생성해준 뒤 PostLikeRepository에 같은 글에 같은 유저가 좋아요를 한 적이 없다면 좋아요를 저장하는 식으로 로직을 만들었다. 그리고 중간에 과제의 요구사항인 작성자 본인이 작성한 글에는 좋아요를 누르지 못하게 하라는 사항이 있어서 Post의 userId와 User의 userId가 같다면 예외를 발생하게 처리하였다.
그리고 좋아요를 취소 할 때는 동일하고 Post와 User정보를 찾아온 뒤 PostLikeRepository에 해당 객체가 존재한다면 delete를 해주는 방식으로 구현을 하였다.
Reposiroty에는 게시글과 유저 정보로 좋아요를 찾을 수 있는 쿼리메서드를 추가해놓았다.
내일은 감기가 나아서 다음 기능을 구현 하는데 도움이 되면 좋겠다.
'TIL' 카테고리의 다른 글
231208 TIL - .gitignore (0) | 2023.12.09 |
---|---|
231207 TIL - cascade, orphanRemoval (0) | 2023.12.07 |
231205 TIL - Builder 패턴 (1) | 2023.12.06 |
231204 TIL - 프로젝트 환경변수 설정 (1) | 2023.12.05 |
231201 TIL - 심화주차 체크리스트(SpringAOP) (1) | 2023.12.02 |