피드 관련 API 추가 필요#23
Hidden character warning
Conversation
|
Warning Rate limit exceeded
⌛ How to resolve this issue?After the wait time has elapsed, a review can be triggered using the We recommend that you space out your commits to avoid hitting the rate limit. 🚦 How do rate limits work?CodeRabbit enforces hourly rate limits for each developer per organization. Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout. Please see our FAQ for further information. Walkthrough북마크 및 피드 기능을 구현하는 새로운 서비스 계층, 저장소 쿼리, DTO, 그리고 REST API 엔드포인트를 추가합니다. 최신/인기/내 상위 장소 및 트렌딩 키워드를 조회하고 북마크를 관리하는 기능이 포함됩니다. Changes
Sequence Diagram(s)sequenceDiagram
participant Client
participant BookmarkController
participant MemberPlaceService
participant MemberPlaceRepository
participant Database
Client->>BookmarkController: GET /api/bookmarks<br/>(with Pageable)
BookmarkController->>BookmarkController: Extract memberId from<br/>CustomUserDetails
BookmarkController->>MemberPlaceService: getBookmarks(memberId,<br/>pageable)
MemberPlaceService->>MemberPlaceRepository: findBookmarksByMemberIdAndSavedStatus<br/>(memberId, SAVED, pageable)
MemberPlaceRepository->>Database: Query MemberPlace with<br/>fetch joins
Database-->>MemberPlaceRepository: Return Page<MemberPlace>
MemberPlaceRepository-->>MemberPlaceService: Page<MemberPlace>
MemberPlaceService->>MemberPlaceService: Map to Page<BookmarkDto>
MemberPlaceService-->>BookmarkController: Page<BookmarkDto>
BookmarkController-->>Client: ResponseEntity.ok<br/>(Page<BookmarkDto>)
sequenceDiagram
participant Client
participant BookmarkController
participant MemberPlaceService
participant MemberPlaceRepository
participant Database
Client->>BookmarkController: PATCH /api/bookmarks/{memberPlaceId}<br/>(UpdateBookmarkRequest)
BookmarkController->>BookmarkController: Extract memberId from<br/>CustomUserDetails
BookmarkController->>BookmarkController: Log request
BookmarkController->>MemberPlaceService: updateBookmark(memberId,<br/>memberPlaceId, request)
MemberPlaceService->>MemberPlaceRepository: findByIdAndMemberIdAndDeletedAtIsNull<br/>(memberPlaceId, memberId)
MemberPlaceRepository->>Database: Query MemberPlace
Database-->>MemberPlaceRepository: Return Optional<MemberPlace>
MemberPlaceRepository-->>MemberPlaceService: Optional<MemberPlace>
MemberPlaceService->>MemberPlaceService: Validate savedStatus == SAVED<br/>or throw error
MemberPlaceService->>MemberPlaceService: Apply non-null fields<br/>from request
MemberPlaceService->>MemberPlaceService: Handle visited flag &<br/>visitedAt logic
MemberPlaceService->>Database: Save updated MemberPlace
MemberPlaceService->>MemberPlaceService: Map to BookmarkDto
MemberPlaceService-->>BookmarkController: BookmarkDto
BookmarkController-->>Client: ResponseEntity.ok<br/>(BookmarkDto)
sequenceDiagram
participant Client
participant FeedController
participant FeedService
participant PlaceRepository
participant MemberPlaceService
participant Database
Client->>FeedController: GET /api/feed/latest<br/>(with Pageable)
FeedController->>FeedController: Log page/size
FeedController->>FeedService: getLatestPlaces(pageable)
FeedService->>PlaceRepository: findAllByOrderByCreatedAtDesc<br/>(pageable)
PlaceRepository->>Database: Query Place order by<br/>createdAt DESC
Database-->>PlaceRepository: Return Page<Place>
PlaceRepository-->>FeedService: Page<Place>
FeedService->>FeedService: Map to Page<PlaceDto>
FeedService-->>FeedController: Page<PlaceDto>
FeedController-->>Client: ResponseEntity.ok<br/>(Page<PlaceDto>)
Client->>FeedController: GET /api/feed/popular<br/>(with Pageable)
FeedController->>FeedController: Log page/size
FeedController->>FeedService: getPopularPlaces(pageable)
FeedService->>PlaceRepository: findPopularPlaces<br/>(SAVED, pageable)
PlaceRepository->>Database: Query Place grouped by<br/>count(MemberPlace)
Database-->>PlaceRepository: Return Page<Place>
PlaceRepository-->>FeedService: Page<Place>
FeedService->>FeedService: Map to Page<PlaceDto>
FeedService-->>FeedController: Page<PlaceDto>
FeedController-->>Client: ResponseEntity.ok<br/>(Page<PlaceDto>)
Client->>FeedController: GET /api/feed/my-top
FeedController->>FeedController: Extract memberId &<br/>log memberId
FeedController->>FeedService: getMyTopPlaces(memberId)
FeedService->>MemberPlaceService: getMyTopPlaces(memberId)
MemberPlaceService->>Database: Query top saved places<br/>by member
Database-->>MemberPlaceService: Return List<Place>
MemberPlaceService-->>FeedService: List<PlaceDto>
FeedService-->>FeedController: List<PlaceDto>
FeedController-->>Client: ResponseEntity.ok<br/>(List<PlaceDto>)
Estimated code review effort🎯 3 (Moderate) | ⏱️ ~25 minutes Possibly related issues
Possibly related PRs
🚥 Pre-merge checks | ✅ 2 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (2 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches🧪 Generate unit tests (beta)
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. Comment |
…ee-Lab/MapSy-BE/issues/20 #21 #22
✨ 변경 사항
✅ 테스트
Summary by CodeRabbit
릴리스 노트
새로운 기능
버그 수정
✏️ Tip: You can customize this high-level summary in your review settings.