Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[NB-203, NB-204] 게시글 좋아요 및 좋아요 취소 기능 구현 #41

Merged
merged 6 commits into from
Aug 8, 2024

Conversation

Aram-su
Copy link
Contributor

@Aram-su Aram-su commented Aug 7, 2024

개요

NB-203

  • 게시글 좋아요 기능 구현

NB-204

  • 게시글 좋아요 취소 기능 구현
  • 게시글 좋아요와 같은 API를 사용, 토글 방식으로 좋아요 생성과 삭제를 같은 API로 처리한다.

PR 유형

어떤 변경 사항이 있나요?

  • 새로운 기능 추가
  • 버그 수정

PR Checklist

PR이 다음 요구 사항을 충족하는지 확인하세요.

  • 커밋 메시지 컨벤션에 맞게 작성했습니다. Commit message convention 참고 (Ctrl + 클릭하세요.)
  • 변경 사항에 대한 테스트를 했습니다.(버그 수정/기능에 대한 테스트).

Aram-su added 6 commits August 7, 2024 20:16
- 생성자의 오류 메시지가 Album으로 되어있어 Post로 수정
- 파라미터 명이 albumId로 되어있어 postId로 수정
1. Post, User 엔티티 수정
 - 매핑용 생성자 추가
 - 필수 필드 초기화

목적:
 - 다른 엔티티와의 매핑 시 임시 인스턴스 생성 용도
 - 불필요한 데이터 로딩 없이 연관 관계 설정 가능
1. PostLike 엔티티 구현
 - Post, User와 다대일 관계 설정

2. PostLikeControllerV1 구현
 - 게시글 좋아요 생성 엔드포인트 구현 (POST "/v1/postlikes/{postId}")

3. PostLikeService 구현
 - 게시글 ID, 현재 사용자의 ID 검증
 - PostLike 엔티티 생성 및 저장

4. PostLikeRepository 인터페이스 추가
 - JpaRepository를 상속받아 기본 CRUD 연산 지원

5. 응답 처리
 - PostLikeResponse : 게시글 좋아요 결과 응답 정보
1. PostLikeControllerV1 엔드 포인트 메소드명 수정
 - 변경 전 : likePost()
 - 변경 후 : togglePostLike()

2. PostLikeService 기능 확장
 - 좋아요 삭제 로직 구현 (토글 방식)
  - 좋아요가 없으면 생성, 있으면 삭제
 - 여러 개의 좋아요가 삭제될 시 예외 발생

3. PostLikeRepository 기능 확장
 - existsPostLikeByPostAndUser : 좋아요 존재 여부 확인 쿼리 추가
 - deletePostLikeByPostAndUser : 좋아요 삭제 쿼리 추가

4. 예외 처리
 - MultiplePostLikeDeleteException : 여러 개의 좋아요 동시 삭제 시 예외 처리
1. 메소드 순서 재구성
 - CRUD 순서로 메소드 정렬
 - 각 CRUD 내에서 응답 복잡도 순 정렬 (Simple -> Detail)
 - 유효성 검사 및 유틸리티 메소드들 클래스 하단으로 이동

2. 책임 분리
 - findPostByIdOrThrow() 메소드 활용, Post 조회 및 예외 처리 로직 통합

목적:
 - 코드 가독성 향상
 - 예외 처리 일관성 확보
- 변경 전 : PostLikeResponse
- 변경 후 : PostLikeCreateResponse
- 어떤 요청에 대한 응답인지 명확히 하기 위해 이름 변경
Copy link
Contributor

@liljoon liljoon left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

게시글 좋아요 관련 api 작성된 것 확인했습니다.
좋아요 관련 api를 생성, 삭제를 분리해서 요청 자체의 목적과 의미를 잘 구분지을 수 있을 것이라고 생각하지만 편하신대로 하셔도 문제 없을 것 같습니다.
PostService 에도 더 간결히 리팩토링 된 것 확인했습니다.
코멘트 부분만 확인하시고 문제 없다면 merge 해도 좋을 것 같습니다.

@Aram-su
Copy link
Contributor Author

Aram-su commented Aug 8, 2024

넵 게시글 좋아요와 취소 분리에 대해 조금 더 고민해보도록 하겠습니다.

@Aram-su Aram-su merged commit 41de57b into dev Aug 8, 2024
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants