Skip to content

[feat] 저장한 책 또는 참여 중 모임의 책 조회 api 구현 및 패키지 정리#166

Merged
buzz0331 merged 27 commits into
developfrom
feat/#156-get-saved-room-book
Aug 9, 2025
Merged

[feat] 저장한 책 또는 참여 중 모임의 책 조회 api 구현 및 패키지 정리#166
buzz0331 merged 27 commits into
developfrom
feat/#156-get-saved-room-book

Conversation

@buzz0331

@buzz0331 buzz0331 commented Aug 7, 2025

Copy link
Copy Markdown
Contributor

#️⃣ 연관된 이슈

closes #156

📝 작업 내용

저장한 책 또는 참여 중 모임의 책 조회 api 구현

  1. 저장된 책 조회 (SAVED) : 로그인한 사용자가 저장한 책 isbn으로 중복없이 조회합니다.
  2. 참여 중 모임의 책 조회 (JOINING) : 참여 중인 방 중 진행중(모집 중, 만료 된 x)인 모임방의 책을 중복없이 조회합니다.

책 저장 상태 변경 로직 수정
회의에서 말했던 것처럼 SavedBooks라는 일급 컬렉션을 제거하고 existsBy를 통해 저장 검증을 하도록 했습니다. 이때 validate는 도메인 로직보다 서비스 로직에 가까운 것 같아. 서비스 로직에 메서드를 정의했습니다. (Book이라는 도메인이 저장 여부 상태를 담고있는 것은 아니기 때문)

Optional 반환을 통한 try-catch 제거
Optional 반환을 하는 findByIsbn 메서드를 통해 기존 서비스 로직에서 try catch를 하는 로직들을 모두 리팩토링하였습니다.

Saved 패키지 제거
기존 SavedBook과 SavedFeed는 각각 Book과 Feed에 종속되는 엔티티라고 판단되어 Book과 Feed 패키지 하위로 이동시켰습니다. 이에 따라 관련 저장 및 조회 로직도 이동했습니다. (Feed의 adapter가 조금 무거워지는 느낌은 드는데 추후에 Content 테이블을 제거하고 리팩토링하면 쿼리가 더 간단해질 것 같다고 생각합니다!)

📸 스크린샷

💬 리뷰 요구사항

이번 api에서는 페이징 처리가 따로 필요 없어 Book도메인을 그대로 사용했습니다. 이에 따라서 서비스 로직에서는 port.dto에 정의되어 있는 BookInfo의 리스트를 반환하고 컨트롤러 계층에서 Response를 생성하는 책임을 갖도록 했습니다.

BookInfo는 책에 대한 정보를 담고 있는 dto이기 때문에 현재 BookSearchListResponse의 inner class로 사용되고 있는 BookDto를 대체할 수 있을 것 같습니다. (책 검색은 페이징 변수를 다 제거해도 될 것 같다고 생각,, <- 기획적으로)

추가적으로, 구현하면서 들었던 리팩토링에 대한 제안은 노션 -> 서버 리팩토링 회의 밑에 적어두었으니 한번씩 확인부탁드립니다!!

📌 PR 진행 시 이러한 점들을 참고해 주세요

* P1 : 꼭 반영해 주세요 (Request Changes) - 이슈가 발생하거나 취약점이 발견되는 케이스 등
* P2 : 반영을 적극적으로 고려해 주시면 좋을 것 같아요 (Comment)
* P3 : 이런 방법도 있을 것 같아요~ 등의 사소한 의견입니다 (Chore)

Summary by CodeRabbit

  • 신규 기능

    • 사용자가 저장한 도서 또는 참여 중인 방의 도서 목록을 조회하는 /books/selectable-list API가 추가되었습니다.
    • 도서 선택 목록 조회 시 "SAVED"(저장됨), "JOINING"(참여 중) 타입별로 필터링이 가능합니다.
  • 버그 수정

    • 없음
  • 리팩터 및 구조 개선

    • 저장 도서/피드 관련 내부 구조가 단순화되고, 관련 코드가 도서/피드 도메인으로 이동되었습니다.
    • 불필요하거나 비어 있던 Saved 관련 클래스 및 인터페이스가 제거되었습니다.
    • 저장 도서 및 저장 피드 관련 매퍼, 어댑터, 포트, 서비스 등의 코드가 통합 및 재구성되었습니다.
    • 예외 처리 및 Optional 사용으로 코드 흐름이 개선되었습니다.
  • 테스트

    • 도서 선택 목록 API의 성공 케이스에 대한 통합 테스트가 추가되었습니다.
  • 문서화

    • Swagger에 도서 선택 목록 API 응답 설명이 추가되었습니다.

Loading
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[THIP2025-215] [feat] 저장된 책/ 자신이 참여중인 모임방의 책 조회

3 participants