Skip to content

Fix: 카드셋 조회 수정#10

Merged
stoneTiger0912 merged 6 commits intomainfrom
feat/add-flitering
Mar 18, 2026
Merged

Fix: 카드셋 조회 수정#10
stoneTiger0912 merged 6 commits intomainfrom
feat/add-flitering

Conversation

@stoneTiger0912
Copy link
Member

@stoneTiger0912 stoneTiger0912 commented Mar 18, 2026

📝 변경 내용


✅ 체크리스트

  • 코드가 정상적으로 동작함
  • 테스트 코드 통과함
  • 문서(README 등)를 최신화함
  • 코드 스타일 가이드 준수

💬 기타 참고 사항

Summary by CodeRabbit

새로운 기능

  • 카드셋 목록에 페이지 네이션 기능 추가
  • 키워드 검색 및 카테고리별 필터링 지원
  • 좋아요 수, 북마크 수 등 다양한 정렬 옵션 추가
  • 그룹 내 카드셋 검색 시 페이지 네이션 및 정렬 기능 지원

@stoneTiger0912 stoneTiger0912 merged commit bdc2eff into main Mar 18, 2026
1 of 2 checks passed
@stoneTiger0912 stoneTiger0912 deleted the feat/add-flitering branch March 18, 2026 05:55
@coderabbitai
Copy link

coderabbitai bot commented Mar 18, 2026

Caution

Review failed

The pull request is closed.

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: d57ac81d-53c7-4bad-b4ee-35aecbeb4060

📥 Commits

Reviewing files that changed from the base of the PR and between da92077 and 221023e.

📒 Files selected for processing (7)
  • src/cardset/application/cardset.use-case.ts
  • src/cardset/application/dto/request/cardset-search.request.ts
  • src/cardset/domain/repository/cardset.repository.ts
  • src/cardset/infrastructure/http/cardset.controller.ts
  • src/cardset/infrastructure/http/group-cardset.controller.ts
  • src/cardset/infrastructure/persistence/cardset.repository.impl.ts
  • src/shared/common/paged-response.ts

Walkthrough

카드셋 조회 기능에 페이지네이션과 필터링 지원을 추가합니다. 새로운 paged 메서드를 사용 사례에 추가하고, 검색 요청 DTO와 페이지 응답 클래스를 도입하여 컨트롤러 엔드포인트를 업데이트하고 저장소 구현을 확장합니다.

Changes

Cohort / File(s) Summary
Use Case Layer - Paged Methods
src/cardset/application/cardset.use-case.ts
두 개의 새로운 paged 메서드 추가: findAllPaged는 전체 카드셋을, findByGroupIdPaged는 그룹별 카드셋을 페이지네이션과 함께 반환하며, 둘 다 가시성 필터링, 반응 데이터 조회, 관리자 정보 포함.
Request DTO
src/cardset/application/dto/request/cardset-search.request.ts
CardsetSearchRequest DTO 추가: 페이지네이션(page, size), 정렬(sortBy, order), 필터링(keyword, category) 파라미터를 정의하고 Swagger 메타데이터로 문서화.
Repository Contract
src/cardset/domain/repository/cardset.repository.ts
CardsetPageOptions에 선택적 groupId 필드 추가하여 그룹별 필터링을 지원.
HTTP Controllers
src/cardset/infrastructure/http/cardset.controller.ts, src/cardset/infrastructure/http/group-cardset.controller.ts
두 엔드포인트를 페이지 응답으로 변경: CardsetSearchRequest 쿼리 파라미터를 받아 findAllPaged/findByGroupIdPaged 사용 후 PagedResponse로 래핑하여 반환.
Repository Implementation
src/cardset/infrastructure/persistence/cardset.repository.impl.ts
기본 정렬을 createdAt에서 id로 변경, 정렬 필드별로 메타데이터 조인 추가(like/book), groupId 필터링 지원, 키워드 검색을 name과 hashtag 모두에서 수행하도록 확장.
Shared Response Type
src/shared/common/paged-response.ts
제네릭 PagedResponse 클래스 추가: items, total, page, size 속성 포함하고 정적 팩토리 메서드 of() 제공.

Sequence Diagram

sequenceDiagram
    actor Client
    participant Controller as CardsetController
    participant UseCase as CardsetUseCase
    participant Repository as CardsetRepository
    participant Database as Database

    Client->>Controller: GET /card-sets?page=1&size=10&sortBy=id&order=desc
    Controller->>Controller: Extract CardsetSearchRequest from query
    Controller->>UseCase: findAllPaged(request, userId)
    
    UseCase->>Repository: findAllPaged(pageOptions)
    Repository->>Database: SELECT * FROM card_sets<br/>WHERE visibility='PUBLIC'<br/>OR groupId IN (...)<br/>ORDER BY id DESC<br/>LIMIT 10 OFFSET 0
    Database-->>Repository: cardsets[], total count
    
    Repository->>Database: SELECT like_count, bookmark_count<br/>FROM card_set_metadata
    Database-->>Repository: metadata[]
    
    Repository-->>UseCase: { items, total, page, size }
    UseCase->>UseCase: Enrich with imageUrl, likeCount,<br/>bookmarkCount, managers
    UseCase-->>Controller: Enriched paged result
    
    Controller->>Controller: Map to CardsetListItemResponse[]
    Controller->>Controller: Wrap in PagedResponse
    Controller-->>Client: ApiResponse<PagedResponse<CardsetListItemResponse>>
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

Possibly related PRs

  • Feat: 그룹 내 카드셋 전체 조회 #6: 카드셋 목록과 그룹별 조회 흐름을 수정하며 코드 레벨에서 직접적으로 관련 있음 (그룹 기반 조회 및 페이지 목록 지원).
  • Feat: 카드셋 메타데이터 추가 #5: CardsetUseCase에서 카드셋 메타데이터(likeCount/bookmarkCount) 처리를 추가하며 본 PR의 paged 메서드가 동일한 메타데이터 처리에 의존함.
  • Feat: grpc 추가 #2: CardsetUseCase와 관련 카드셋 조회 로직을 수정하며 이미지/가시성/gRPC 인식 조회를 추가함.

Poem

🐰 페이지네이션의 춤을 추며,
필터링으로 카드셋을 정렬하고,
그룹별 검색도 술술 흐르네요,
응답은 깔끔하게 PagedResponse로,
토끼의 발걸음처럼 가볍게 나아갑니다! ✨

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feat/add-flitering
📝 Coding Plan
  • Generate coding plan for human review comments

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.

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.

1 participant