좋아요 기능 구현
팀프로젝트로 진행했던 것에 더하여 좋아요 기능을 구현해야 했기 때문에
이미 존재하는 좋아요 기능 대신 "도움이 됐어요" 기능을 추가해 보기로 했다
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 가 생성될 테니 말이다