몬그로이

좋아요 기능 구현 본문

카테고리 없음

좋아요 기능 구현

Mon Groy 2024. 7. 2. 20:00

팀프로젝트로 진행했던 것에 더하여 좋아요 기능을 구현해야 했기 때문에

이미 존재하는 좋아요 기능 대신 "도움이 됐어요" 기능을 추가해 보기로 했다

 

User 가 남긴 Review 에 Thanks 를 달기도 하고 취소하기도 하는 기능이다

 

조건

  • 자신이 쓴 Review 에 대해서는 Thanks 를 달 수 없음
  • User 가 Profile 에서 Thanks 를 달아둔 Review 를 리스트로 볼 수 있음
  • 이미 Thanks 를 달아둔 것을 다시 누르면 취소됨


Thanks 와 User 와 Review 의 연관관계 설정

더보기

처음에는 User 한 사람 당 Thanks ID 를 하나만 가지고 있는 걸로 생각했었는데,

그렇게 하니까 Thanks Entity 를 따로 만들지 않아도 되지만 그건 User Id 와 다를 게 없는 것이었고,

Review 엔티티에 List<Long> ThanksUserId 형태가 되므로 List 의 Type 에 차별점이 없다고 판단 되었다

한 User 가 여러 개의 Thanks 를 달 수 있음

한 Review 에 여러 개의 Thanks 가 달릴 수 있으나, Thanks 하나 당 하나의 Review 에만 달 수 있음

Thanks 하나 당 User 하나만 연결 되나, User 하나 당 Thanks 여러 개 가질 수 있음

 

User 엔티티에 List<Thanks> gaveThanksList

Review 엔티티에 List<Thanks> recievedThankList

Thank 엔티티에 Thank_id, User_id, Review_id

 

가능한 참조 상황

User 가 profile 에서 Thanks List 를 확인 -> Thanks 를 등록한 ReviewList 조회

Review 에 등록된 ThanksList 를 통해서 Thanks 를 등록한 UserList 확인 (Reveiw -> Thanks -> User)

Thanks id 가 등록된 Review 를 확인하여 profile 에 List 로 보여줌

 

따라서

User - Thanks : 일대다 양방향

Review - Thanks : 일대다 양방향

 

Thanks
Thanks_id User_id Review_id
1 3 13
2 2 13
3 2 15
4 1 16

 

이렇게 만들고 생각하니까 Thanks_id 는 그 수가 어마어마 하겠구나 싶다

user 는 다량의 Review 를 생성하고, 그 생성된 Review 에 다량의 Thanks 가 생성될 테니 말이다