Refactor: 북마크 조회 시 bookmarkId 추가#191
Conversation
|
Caution Review failedThe pull request is closed. Walkthrough이 변경사항은 북마크 기능의 데이터 구조를 기존의 북마크된 매장 ID 집합(Set)에서 매장 ID와 북마크 ID를 매핑하는 Map 구조로 전환합니다. 이에 따라 관련 서비스, DTO, 예외 처리, 저장소 인터페이스, 에러 메시지, 예외 클래스 등이 일관되게 수정되었습니다. Changes
Sequence Diagram(s)sequenceDiagram
participant User
participant BookmarkService
participant BookmarkRepository
participant StoreService
participant StoreRepository
participant StoreDTO
User->>BookmarkService: getBookmarks(userId)
BookmarkService->>BookmarkRepository: findAllByUserAndDeletedFalse(user)
BookmarkRepository-->>BookmarkService: List<Bookmark>
BookmarkService->>StoreService: getAllStoresByPageAndDeparments(storeIds, bookmarkMap)
StoreService->>StoreRepository: findStoresByIds(storeIds)
StoreRepository-->>StoreService: List<Store>
StoreService->>StoreDTO: fromEntity(store, bookmarkId, ...)
StoreDTO-->>StoreService: StorePageReadResponse
StoreService-->>BookmarkService: List<StorePageReadResponse>
BookmarkService-->>User: List<StorePageReadResponse>
Estimated code review effort🎯 3 (Moderate) | ⏱️ ~20 minutes Possibly related PRs
📜 Recent review detailsConfiguration used: CodeRabbit UI 📒 Files selected for processing (1)
✨ 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. Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments. CodeRabbit Commands (Invoked using PR comments)
Other keywords and placeholders
CodeRabbit Configuration File (
|
There was a problem hiding this comment.
Actionable comments posted: 3
🧹 Nitpick comments (2)
nowait-domain/domain-user-rdb/src/main/java/com/nowait/domainuserrdb/bookmark/exception/AlreadyDeletedBookmarkException.java (1)
6-6: 코드 포맷팅 일관성 개선 고려기능적으로는 올바른 구현이지만, 다른 유사한 예외 클래스들(
StatisticViewUnauthorizedException등)과의 일관성을 위해 생성자를 여러 줄로 포맷하는 것을 고려해보세요.- public AlreadyDeletedBookmarkException() { super(ErrorMessage.ALREADY_DELETED_BOOKMARK.getMessage()); } + public AlreadyDeletedBookmarkException() { + super(ErrorMessage.ALREADY_DELETED_BOOKMARK.getMessage()); + }nowait-app-user-api/src/main/java/com/nowait/applicationuser/store/service/StoreServiceImpl.java (1)
3-3: 불필요한 임포트를 제거해주세요.
java.awt.print.Book임포트는 코드에서 사용되지 않으며 북마크 기능과 관련이 없습니다.-import java.awt.print.Book;
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (11)
nowait-app-user-api/src/main/java/com/nowait/applicationuser/bookmark/service/BookmarkService.java(4 hunks)nowait-app-user-api/src/main/java/com/nowait/applicationuser/exception/GlobalExceptionHandler.java(2 hunks)nowait-app-user-api/src/main/java/com/nowait/applicationuser/store/dto/StoreDetailReadResponse.java(3 hunks)nowait-app-user-api/src/main/java/com/nowait/applicationuser/store/dto/StorePageReadResponse.java(3 hunks)nowait-app-user-api/src/main/java/com/nowait/applicationuser/store/service/StoreService.java(2 hunks)nowait-app-user-api/src/main/java/com/nowait/applicationuser/store/service/StoreServiceImpl.java(12 hunks)nowait-common/src/main/java/com/nowait/common/exception/ErrorMessage.java(1 hunks)nowait-domain/domain-core-rdb/src/main/java/com/nowait/domaincorerdb/store/repository/StoreRepository.java(0 hunks)nowait-domain/domain-user-rdb/src/main/java/com/nowait/domainuserrdb/bookmark/exception/AlreadyDeletedBookmarkException.java(1 hunks)nowait-domain/domain-user-rdb/src/main/java/com/nowait/domainuserrdb/bookmark/exception/BookmarkNotFoundException.java(1 hunks)nowait-domain/domain-user-rdb/src/main/java/com/nowait/domainuserrdb/bookmark/repository/BookmarkRepository.java(0 hunks)
💤 Files with no reviewable changes (2)
- nowait-domain/domain-core-rdb/src/main/java/com/nowait/domaincorerdb/store/repository/StoreRepository.java
- nowait-domain/domain-user-rdb/src/main/java/com/nowait/domainuserrdb/bookmark/repository/BookmarkRepository.java
🧰 Additional context used
🧬 Code Graph Analysis (4)
nowait-app-user-api/src/main/java/com/nowait/applicationuser/bookmark/service/BookmarkService.java (1)
nowait-domain/domain-user-rdb/src/main/java/com/nowait/domainuserrdb/bookmark/exception/AlreadyDeletedBookmarkException.java (1)
AlreadyDeletedBookmarkException(5-7)
nowait-domain/domain-user-rdb/src/main/java/com/nowait/domainuserrdb/bookmark/exception/AlreadyDeletedBookmarkException.java (1)
nowait-domain/domain-redis/src/main/java/com/nowait/domaincoreredis/rank/exception/MenuCounterUpdateException.java (1)
MenuCounterUpdateException(5-7)
nowait-app-user-api/src/main/java/com/nowait/applicationuser/store/dto/StorePageReadResponse.java (2)
nowait-app-user-api/src/main/java/com/nowait/applicationuser/store/dto/StorePageReadDto.java (2)
StorePageReadDto(13-54)fromEntity(29-53)nowait-app-user-api/src/main/java/com/nowait/applicationuser/store/dto/StoreImageUploadResponse.java (1)
StoreImageUploadResponse(9-25)
nowait-app-user-api/src/main/java/com/nowait/applicationuser/store/service/StoreServiceImpl.java (4)
nowait-domain/domain-user-rdb/src/main/java/com/nowait/domainuserrdb/bookmark/exception/BookmarkNotFoundException.java (1)
BookmarkNotFoundException(5-9)nowait-app-user-api/src/main/java/com/nowait/applicationuser/store/dto/StorePageReadDto.java (1)
StorePageReadDto(13-54)nowait-app-user-api/src/main/java/com/nowait/applicationuser/store/controller/StoreController.java (1)
getAllStoresByPageAndDeparments(43-57)nowait-domain/domain-core-rdb/src/main/java/com/nowait/domaincorerdb/store/repository/StoreRepository.java (1)
StoreRepository(16-37)
🔇 Additional comments (17)
nowait-domain/domain-user-rdb/src/main/java/com/nowait/domainuserrdb/bookmark/exception/BookmarkNotFoundException.java (1)
7-7: LGTM!에러 메시지 enum 리팩토링과 일치하는 올바른 변경사항입니다.
nowait-app-user-api/src/main/java/com/nowait/applicationuser/bookmark/service/BookmarkService.java (1)
98-98: LGTM!
AlreadyDeletedBookmarkException사용이 올바르며, 더 구체적인 예외 처리를 통해 에러 처리가 개선되었습니다.nowait-app-user-api/src/main/java/com/nowait/applicationuser/store/service/StoreService.java (1)
4-4: LGTM!북마크 리팩토링을 지원하기 위한 올바른 import 추가입니다.
nowait-app-user-api/src/main/java/com/nowait/applicationuser/store/dto/StorePageReadResponse.java (2)
18-18: 북마크 ID 필드 추가가 적절합니다.새로운
bookmarkId필드가 논리적인 위치에 잘 배치되었고, 기존 북마크 관련 필드들과 함께 그룹화되어 있습니다.
35-35: 팩토리 메서드 업데이트가 올바르게 구현되었습니다.새로운
bookmarkId매개변수가 메서드 시그니처와 빌더 패턴에 일관되게 통합되었습니다.Also applies to: 48-48
nowait-app-user-api/src/main/java/com/nowait/applicationuser/store/dto/StoreDetailReadResponse.java (1)
18-18: 일관된 북마크 ID 통합이 잘 구현되었습니다.
StorePageReadResponse와 동일한 패턴으로bookmarkId필드와 팩토리 메서드가 업데이트되어 일관성이 유지되었습니다.Also applies to: 37-37, 51-51
nowait-app-user-api/src/main/java/com/nowait/applicationuser/exception/GlobalExceptionHandler.java (3)
40-40: 새로운 예외 클래스 임포트가 적절히 추가되었습니다.
AlreadyDeletedBookmarkException임포트가 올바른 위치에 배치되었습니다.
157-158: 북마크 예외 처리의 에러 코드 업데이트가 적절합니다.
NOT_FOUND_BOOKMARK에러 코드로의 변경이 새로운 에러 메시지 체계와 일치합니다.
160-167: 새로운 예외 핸들러가 올바르게 구현되었습니다.
AlreadyDeletedBookmarkException핸들러가 기존 패턴을 따라 적절히 구현되었고, 로깅, 알람, 에러 응답이 모두 포함되어 있습니다.nowait-app-user-api/src/main/java/com/nowait/applicationuser/store/service/StoreServiceImpl.java (8)
6-6: 새로운 기능에 필요한 임포트들이 적절히 추가되었습니다.
Collection,Optional,BookmarkNotFoundException임포트가 새로운 북마크 처리 로직에 필요합니다.Also applies to: 11-11, 48-48
67-68: 메서드 시그니처 변경이 적절합니다.사용자별 북마크 정보를 조회하기 위해
CustomOAuth2User매개변수가 추가된 것이 합리적입니다.
87-98: Redis 접근 에러 처리가 개선되었습니다.Redis 접근 실패 시 0L을 반환하는 예외 처리가 추가되어 시스템 안정성이 향상되었습니다.
116-123: 북마크 조회 로직이 효과적으로 리팩토링되었습니다.Set에서 Map으로의 변경을 통해 북마크 ID 추적이 가능해졌고, 더 상세한 북마크 관리가 가능합니다.
127-128: DTO 매핑 로직이 깔끔하게 구현되었습니다.
bookmarkId추출과isBookmark계산 로직이 명확하고, 팩토리 메서드 호출도 올바르게 업데이트되었습니다.Also applies to: 133-133
146-148: 매장 상세 조회 메서드가 일관되게 개선되었습니다.Optional 패턴을 사용한 북마크 조회와 매개변수 검증 로직이 깔끔하게 구현되었습니다.
Also applies to: 157-159, 171-172
290-291: 정렬 로직의 포매팅이 개선되었습니다.코드 가독성을 향상시키는 minor한 포매팅 변경입니다.
309-310: 오버로드된 메서드가 일관되게 업데이트되었습니다.북마크 매개변수가
Set<Long>에서Map<Long, Long>으로 변경되어 새로운 북마크 ID 추적 방식과 일치합니다.Also applies to: 354-355, 364-365
작업 요약
북마크 조회 시 bookmarkId 추가
Issue Link
#178
문제점 및 어려움
해결 방안
Reference
Summary by CodeRabbit
신규 기능
버그 수정
리팩터
기타