Skip to content

[FIX] CursorPagingRequest 디폴트값 주입 로직 수정#47

Merged
ksg1227 merged 2 commits intodevelopfrom
fix/#46-change-paging-request
Oct 19, 2025
Merged

[FIX] CursorPagingRequest 디폴트값 주입 로직 수정#47
ksg1227 merged 2 commits intodevelopfrom
fix/#46-change-paging-request

Conversation

@ksg1227
Copy link
Copy Markdown
Contributor

@ksg1227 ksg1227 commented Oct 19, 2025

#️⃣연관된 이슈

closes #46

📝작업 내용

요청 DTO 의 필드로 CursorPagingRequest 를 포함하여 요청하는 형식이 아니라, CursorPagingRequest 를 단일로 사용하는 API 들에서 cursor, size 값이 정상적으로 기본값 설정이 되지 않는 오류를 확인하였습니다.

CursorPagingRequest 자체에서는 HasPaing 인터페이스를 활용하지 않았기 때문인데, 해당 문제를 해결하고자 CursorPagingRequest 도 마찬가지로 HasPaging 인터페이스를 구현하도록 함으로써 문제를 해결하였습니다.

스크린샷 (선택)

💬리뷰 요구사항(선택)

Summary by CodeRabbit

릴리스 노트

  • 버그 수정
    • 음식 트럭 목록 조회 시 일관된 기본 정렬 및 페이지네이션 설정이 적용되도록 개선되었습니다.
    • 저장된 음식 트럭과 내 음식 트럭 조회 기능의 페이지 크기 기본값이 안정적으로 처리되도록 수정되었습니다.

@ksg1227 ksg1227 requested a review from buzz0331 October 19, 2025 05:34
@ksg1227 ksg1227 self-assigned this Oct 19, 2025
@ksg1227 ksg1227 linked an issue Oct 19, 2025 that may be closed by this pull request
2 tasks
@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented Oct 19, 2025

Walkthrough

CursorPagingRequest의 기본값 주입 로직을 개선했습니다. HasPaging 인터페이스에서 null 크기를 기본값 20으로 처리하고, CursorPagingRequest가 HasPaging을 구현하며, 서비스 계층에서 pagingOrDefault를 통해 기본 정렬 타입을 적용합니다.

Changes

코호트 / 파일(s) 변경 요약
HasPaging 인터페이스 개선
src/main/java/konkuk/chacall/global/common/dto/HasPaging.java
req.cursor()가 null일 때 size를 기본값 20으로 설정하는 로직 추가로 일관된 페이지 크기 처리
CursorPagingRequest 구현
src/main/java/konkuk/chacall/global/common/dto/CursorPagingRequest.java
HasPaging 인터페이스 구현 및 cursorPagingRequest() 메서드 오버라이드 추가
서비스 계층 기본값 정규화
src/main/java/konkuk/chacall/domain/member/application/MemberService.java, src/main/java/konkuk/chacall/domain/owner/application/OwnerService.java
pagingOrDefault 또는 CursorPagingRequest 생성을 통해 기본 SortType.NEWEST 적용

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~10 minutes

인터페이스 구현과 기본값 처리 로직이 명확하며, 같은 패턴의 일관된 변경이 서비스 계층에 반복적으로 적용되어 있습니다. 다양한 파일에 걸쳐 있지만 각 변경의 목적과 영향이 단순하고 직관적입니다.

Poem

🐰 페이지 번호가 헷갈렸던 날,
기본값이 자꾸 사라져서 말이야,
이제는 HasPaging이 챙겨주네 ✨
스무 개씩 나눠주는 그 따뜻함!

Pre-merge checks and finishing touches

❌ Failed checks (1 warning)
Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. You can run @coderabbitai generate docstrings to improve docstring coverage.
✅ Passed checks (4 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title Check ✅ Passed PR 제목 "[FIX] CursorPagingRequest 디폴트값 주입 로직 수정"은 변경사항의 핵심을 정확하게 반영하고 있습니다. CursorPagingRequest가 HasPaging 인터페이스를 구현하도록 수정하여 기본값 주입 문제를 해결하는 것이 주요 변경사항이며, 이는 제목에 명확하게 표현되어 있습니다. 제목은 간결하고 구체적이며, 팀원들이 변경 이력을 빠르게 이해할 수 있는 수준의 정보를 제공합니다.
Linked Issues Check ✅ Passed 연결된 이슈 #46의 목표인 "HasPaging 로직 수정"과 "CursorPagingRequest 로직 수정" 두 가지가 모두 충족되었습니다. HasPaging.java에서 기본 크기값 처리 로직이 수정되었고, CursorPagingRequest.java에서 HasPaging 인터페이스 구현 및 cursorPagingRequest() 메서드가 추가되었습니다. 또한 MemberService.java와 OwnerService.java의 변경사항은 이러한 수정사항을 실제로 적용하여 기본값 주입 문제를 해결하는 것으로 확인됩니다.
Out of Scope Changes Check ✅ Passed PR의 모든 변경사항이 연결된 이슈 #46의 목표 범위 내에 있습니다. CursorPagingRequest.java와 HasPaging.java의 핵심 수정사항 외에, MemberService.java와 OwnerService.java의 변경사항도 수정된 기본값 주입 로직을 실제로 적용하는 필수적인 구현으로 이해되며, 이는 전체 목표 달성의 일부입니다. 범위를 벗어난 변경사항은 발견되지 않습니다.
✨ Finishing touches
  • 📝 Generate docstrings
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch fix/#46-change-paging-request

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.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link
Copy Markdown

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 0

🧹 Nitpick comments (3)
src/main/java/konkuk/chacall/global/common/dto/HasPaging.java (1)

16-21: size 기본값 일관화 OK + 매직 넘버 상수화 제안

  • 변경된 size 계산은 명확하고 중복 생성을 줄입니다. LGTM.
  • 다만 20, 0L, Long.MAX_VALUE가 파일 내 여러 군데 반복됩니다. 인터페이스 상수로 통일하면 오타·불일치를 방지할 수 있습니다. 또한 (선택) 최대 페이지 사이즈 상한을 두는 것도 고려해 주세요.

적용 예시:

 public interface HasPaging {
+    int DEFAULT_PAGE_SIZE = 20;
+    long START_CURSOR_OLDEST = 0L;
+    long START_CURSOR_NEWEST = Long.MAX_VALUE;
     CursorPagingRequest cursorPagingRequest();

     default CursorPagingRequest pagingOrDefault(SortType sort) {
         CursorPagingRequest req = cursorPagingRequest();

         if (req == null) {
-            return (sort == SortType.OLDEST)
-                    ? new CursorPagingRequest(0L, 20)
-                    : new CursorPagingRequest(Long.MAX_VALUE, 20);
+            return (sort == SortType.OLDEST)
+                    ? new CursorPagingRequest(START_CURSOR_OLDEST, DEFAULT_PAGE_SIZE)
+                    : new CursorPagingRequest(START_CURSOR_NEWEST, DEFAULT_PAGE_SIZE);
         }

         if (req.cursor() == null) {
-            int size = (req.size() == null) ? 20 : req.size();
+            int size = (req.size() == null) ? DEFAULT_PAGE_SIZE : req.size();
             return (sort == SortType.OLDEST)
-                    ? new CursorPagingRequest(0L, size)
-                    : new CursorPagingRequest(Long.MAX_VALUE, size);
+                    ? new CursorPagingRequest(START_CURSOR_OLDEST, size)
+                    : new CursorPagingRequest(START_CURSOR_NEWEST, size);
         }

         if (req.size() == null) {
-            return new CursorPagingRequest(req.cursor(), 20);
+            return new CursorPagingRequest(req.cursor(), DEFAULT_PAGE_SIZE);
         }
  • 확인 요청: 저장소 쿼리가 NEWEST/OLDEST에서 각각 id < cursor/id > cursor 혹은 유사한 비교를 사용한다면 위 센티넬 값이 의도와 일치하는지 한번 더 점검해 주세요.
src/main/java/konkuk/chacall/domain/member/application/MemberService.java (1)

41-42: NPE 가능성: cursorPagingRequest가 null이면 바로 NPE

컨트롤러/파사드에서 항상 비-null을 보장하지 않으면 여기서 NPE가 납니다. 방어 로직을 권장합니다.

간단한 가드 예시:

-        CursorPagingRequest request = cursorPagingRequest.pagingOrDefault(SortType.NEWEST);
-        return savedFoodTruckService.getSavedFoodTrucks(request, member);
+        CursorPagingRequest normalized = (cursorPagingRequest != null)
+                ? cursorPagingRequest.pagingOrDefault(SortType.NEWEST)
+                : new CursorPagingRequest(null, null).pagingOrDefault(SortType.NEWEST);
+        return savedFoodTruckService.getSavedFoodTrucks(normalized, member);
  • 동일 패턴이 존재한다면 일괄 적용을 고려해 주세요(예: OwnerService). 컨트롤러 레벨에서 비-null을 보장한다면 해당 근거를 주석으로 남겨도 좋습니다.
src/main/java/konkuk/chacall/domain/owner/application/OwnerService.java (1)

129-130: 여기도 NPE 가능성 동일

request가 null일 경우 pagingOrDefault 호출에서 NPE가 발생할 수 있습니다. MemberService와 동일하게 방어 로직 권장합니다.

예시:

-        CursorPagingRequest cursorPagingRequest = request.pagingOrDefault(SortType.NEWEST);
-        return myFoodTruckService.getMyFoodTrucks(cursorPagingRequest, ownerId);
+        CursorPagingRequest normalized = (request != null)
+                ? request.pagingOrDefault(SortType.NEWEST)
+                : new CursorPagingRequest(null, null).pagingOrDefault(SortType.NEWEST);
+        return myFoodTruckService.getMyFoodTrucks(normalized, ownerId);
📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between e238553 and 178a5de.

📒 Files selected for processing (4)
  • src/main/java/konkuk/chacall/domain/member/application/MemberService.java (1 hunks)
  • src/main/java/konkuk/chacall/domain/owner/application/OwnerService.java (1 hunks)
  • src/main/java/konkuk/chacall/global/common/dto/CursorPagingRequest.java (1 hunks)
  • src/main/java/konkuk/chacall/global/common/dto/HasPaging.java (1 hunks)
🔇 Additional comments (1)
src/main/java/konkuk/chacall/global/common/dto/CursorPagingRequest.java (1)

18-23: HasPaging 구현으로 기본값 주입 경로 확보 — 좋습니다

Record가 HasPaging을 구현하고 cursorPagingRequest()this를 반환하므로 표준화된 기본값 처리 흐름이 완성되었습니다. 별다른 이슈 없습니다.

@ksg1227 ksg1227 merged commit 1c1d4e4 into develop Oct 19, 2025
2 checks passed
@ksg1227 ksg1227 deleted the fix/#46-change-paging-request branch October 19, 2025 05:42
Copy link
Copy Markdown
Contributor

@buzz0331 buzz0331 left a comment

Choose a reason for hiding this comment

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

이제 확인했네요. 굿굿입니다~

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.

[FIX] CursorPagingRequest 디폴트값 주입 로직 수정

2 participants