[Hotfix] 방 조회 관련 api들 공개방 반환/ isPublic 반환 필드 추가#259
Conversation
Walkthrough특정 책의 모집중인 방 조회 응답 DTO에 isPublic 필드를 추가하고, 저장소 조회에서 isPublic 값을 프로젝션해 전달합니다. 카테고리 기반 다른 모집중인 방 조회에는 공개방(isPublic=true) 필터가 추가되었습니다. Changes
Sequence Diagram(s)sequenceDiagram
participant Client
participant Controller
participant Repository
participant DB
Client->>Controller: 특정 책 모집중 방 조회 요청
Controller->>Repository: findRoomsByIsbnOrderByStartDateAsc(isbn, cursor)
Repository->>DB: SELECT ... , is_public, start_date ...
DB-->>Repository: Rows (incl. is_public)
Repository-->>Controller: DTOs with isPublic
Controller-->>Client: BookRecruitingRoomsResponse (isPublic 포함)
Estimated code review effort🎯 3 (Moderate) | ⏱️ ~20–30 minutes Assessment against linked issues
Assessment against linked issues: Out-of-scope changes
Possibly related PRs
Suggested reviewers
Poem
Tip 🔌 Remote MCP (Model Context Protocol) integration is now available!Pro plan users can now connect to remote MCP servers from the Integrations page. Connect with popular remote MCPs such as Notion and Linear to add more context to your reviews and chats. ✨ Finishing Touches
🧪 Generate unit tests
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. 🪧 TipsChatThere are 3 ways to chat with CodeRabbit:
SupportNeed help? Create a ticket on our support page for assistance with any issues or questions. CodeRabbit Commands (Invoked using PR/Issue comments)Type Other keywords and placeholders
CodeRabbit Configuration File (
|
| .and(room.startDate.after(LocalDate.now())) // 모집 마감 시각 > 현재 시각 | ||
| .and(room.roomId.ne(roomId)) // 현재 방 제외 | ||
| .and(room.roomId.ne(roomId))// 현재 방 제외 | ||
| .and(room.isPublic.isTrue()) // 공개방 만 |
Test Results411 tests 411 ✅ 33s ⏱️ Results for commit 13c4fe7. |
There was a problem hiding this comment.
Actionable comments posted: 0
🧹 Nitpick comments (1)
src/main/java/konkuk/thip/room/adapter/out/persistence/repository/RoomQueryRepositoryImpl.java (1)
187-189: 추천 쿼리의 공개방 필터 추가는 적절. ACTIVE 상태 조건도 포함하는 것을 권장현재 where 절에 공개방 필터가 추가되었지만, 다른 모집중 조회들과 달리 상태(StatusType.ACTIVE) 조건이 없습니다. 비활성/삭제 방이 추천에 섞일 여지가 있어 일관성 차원에서 ACTIVE 조건 추가를 권장합니다.
아래 패치를 고려해 주세요.
@@ - room.categoryJpaEntity.value.eq(category) - .and(room.startDate.after(LocalDate.now())) // 모집 마감 시각 > 현재 시각 - .and(room.roomId.ne(roomId))// 현재 방 제외 - .and(room.isPublic.isTrue()) // 공개방 만 + room.categoryJpaEntity.value.eq(category) + .and(room.startDate.after(LocalDate.now())) // 모집 마감 시각 > 현재 시각 + .and(room.status.eq(StatusType.ACTIVE)) // 활성 방만 + .and(room.roomId.ne(roomId)) // 현재 방 제외 + .and(room.isPublic.isTrue()) // 공개방만의도적으로 비활성 방도 포함하려는 경우라면 현재 구현 유지가 맞는지 확인 부탁드립니다.
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
💡 Knowledge Base configuration:
- MCP integration is disabled by default for public repositories
- Jira integration is disabled by default for public repositories
- Linear integration is disabled by default for public repositories
You can enable these sources in your CodeRabbit configuration.
📒 Files selected for processing (2)
src/main/java/konkuk/thip/book/adapter/in/web/response/BookRecruitingRoomsResponse.java(1 hunks)src/main/java/konkuk/thip/room/adapter/out/persistence/repository/RoomQueryRepositoryImpl.java(2 hunks)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (1)
- GitHub Check: build
🔇 Additional comments (2)
src/main/java/konkuk/thip/book/adapter/in/web/response/BookRecruitingRoomsResponse.java (1)
21-22: JSON 프로퍼티 매핑 명시 필요 및 DTO 생성 지점 확인
BookRecruitingRoomDtorecord의 boolean 컴포넌트명isPublic이 Jackson 버전에 따라 드물게public으로 인식되는 이슈가 있어,@JsonProperty("isPublic")로 명시적 고정을 권장합니다.- 레포 전역에서
BookRecruitingRoomDto(생성자 호출(6→7 인자) 검토 결과, 정의부 외에는 호출 지점이 발견되지 않았습니다. Controller/Service 또는 매퍼 코드에서 실제로 레코드를 생성·매핑하는 부분이 있다면, 인자 개수와 순서가 올바르게 반영됐는지 반드시 확인하세요.@@ src/main/java/konkuk/thip/book/adapter/in/web/response/BookRecruitingRoomsResponse.java - String deadlineEndDate, - boolean isPublic + String deadlineEndDate, + @com.fasterxml.jackson.annotation.JsonProperty("isPublic") boolean isPublic(선택) import 추가:
import com.fasterxml.jackson.annotation.JsonProperty;
- 매핑 로직이 Stream API, MapStruct 등 별도 매퍼를 통해 구현돼 있다면, 해당 코드 역시 함께 점검해 주세요.
- 가능하다면 관련 단위 테스트를 작성해 JSON 직렬화/역직렬화 결과가 기대대로 나오는지 검증하시는 것을 추천드립니다.
src/main/java/konkuk/thip/room/adapter/out/persistence/repository/RoomQueryRepositoryImpl.java (1)
417-419: RoomQueryDto 생성자 및 최종 응답 매핑에서 isPublic null-safe 처리 검증 필요
- RoomQueryDto 클래스 생성자 시그니처에 isPublic 매개변수(타입 Boolean 또는 boolean) 선언 여부 확인
- Boolean일 경우 null 언박싱 시 NPE 방지를 위한 기본값(false) 처리 로직 적용 여부 점검
- BookRecruitingRoomsResponse.BookRecruitingRoomDto 레코드에 isPublic 필드 포함 여부 확인
- 서비스/컨트롤러 등 매핑 코드에서 RoomQueryDto → BookRecruitingRoomDto 변환 시 null-safe 처리 적용 검증
#️⃣ 연관된 이슈
📝 작업 내용
📸 스크린샷
💬 리뷰 요구사항
📌 PR 진행 시 이러한 점들을 참고해 주세요
Summary by CodeRabbit