Notice
Recent Posts
Recent Comments
Link
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

Skipalong's tistory

231206 TIL - 좋아요기능 본문

TIL

231206 TIL - 좋아요기능

Skipalong 2023. 12. 6. 21:06

오늘도 감기에 걸려서 제정신이 아닌 상태로 코딩을 한 것 같다. 그래도 게시글/댓글에 좋아요를 추가하는 기능은 구현했다. 

우선 게시글 좋아요와 댓글 좋아요 엔티티를 만들고 각각에 맞게 컨트롤러, 서비스, 레포지토리를 만들어 주었다. 또 상황에 맞는 에러코드를 추가해서 예외처리까지 해주었다. 

Entity

엔티티는 이런식으로 ManyToOne 으로 User와 Post를 연관시켰고 빌더 패턴으로 생성자를 만들어 보았다. 

Controller

컨트롤러에는 @PathVariable로 postId를 받아오고 @AuthenticationPrincipal 으로 User정보를 받아와서 Service단에 메서드를 구현한 뒤 ResponseEntity로 반환을 하였다. 

Service - like

받아온 PostId로 PostRepository에서 Post를 찾아오고 받아온 User정보로 UserRepository에서 User를 찾아온 뒤 그것을 바탕으로 PostLike 객체를 생성해준 뒤 PostLikeRepository에 같은 글에 같은 유저가 좋아요를 한 적이 없다면 좋아요를 저장하는 식으로 로직을 만들었다. 그리고 중간에 과제의 요구사항인 작성자 본인이 작성한 글에는 좋아요를 누르지 못하게 하라는 사항이 있어서 Post의 userId와 User의 userId가 같다면 예외를 발생하게 처리하였다.

Service - unlike

그리고 좋아요를 취소 할 때는 동일하고 Post와 User정보를 찾아온 뒤 PostLikeRepository에 해당 객체가 존재한다면 delete를 해주는 방식으로 구현을 하였다.

Repository

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