Merged
Conversation
Contributor
There was a problem hiding this comment.
Pull request overview
This PR implements a feed list query feature using no-offset cursor-based pagination with QueryDSL projections. The implementation follows good practices for avoiding N+1 queries by fetching feed pictures in a separate batched query.
Changes:
- Added feed list query API endpoint (
GET /api/v1/feeds) with cursor-based pagination support - Implemented QueryDSL-based repository with optimized queries to prevent N+1 issues
- Added comprehensive test coverage for repository, service, and controller layers
- Updated build configuration and deployment scripts with memory optimizations
Reviewed changes
Copilot reviewed 23 out of 24 changed files in this pull request and generated 2 comments.
Show a summary per file
| File | Description |
|---|---|
| FeedQueryController.java | REST controller exposing feed list endpoint with pagination |
| FeedQueryServiceImpl.java | Service layer delegating to repository |
| FeedRepositoryImpl.java | QueryDSL implementation with projection and batched picture fetching |
| FeedDetailResponse.java | Response DTO for feed details with member and picture information |
| GetAllMemberFeedsResponse.java | Wrapper response with feeds list and hasNext flag |
| FeedDetailRecord.java | Internal record for QueryDSL projection |
| FeedPictureRecord.java | Record for feed picture data |
| FeedRepository.java | Extended to include custom repository interface |
| FeedRepositoryCustom.java | Custom repository interface definition |
| FeedRepositoryImplTest.java | Comprehensive repository integration tests |
| FeedQueryServiceImplTest.java | Service layer unit tests |
| FeedQueryControllerTest.java | Controller test with API documentation |
| index.adoc | Updated API documentation index |
| build.gradle | Version bump to 0.11.1 and test/build memory configuration |
| docker-compose.yml | Added JVM and Docker memory limits for production |
| deploy-dev/docker-compose.yml | Added memory limits for development |
| config.sh | Updated health check parameters |
| validate_and_switch.sh | Reduced initialization wait time |
| start_sub_container.sh | Reduced initialization wait time |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
src/main/java/com/project200/undabang/feed/dto/response/FeedDetailResponse.java
Show resolved
Hide resolved
src/main/java/com/project200/undabang/feed/repository/impl/FeedRepositoryImpl.java
Show resolved
Hide resolved
dlchdaud123
reviewed
Jan 28, 2026
dlchdaud123
approved these changes
Jan 28, 2026
Contributor
|
수고하셨습니다! |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
📝작업 내용
피드 전체 조회 기능을 개발하였습니다.
피드 조회를 위해 no - offset 기반 페이지네이션이 필요했습니다.
따라서 우선 QueryDSL의 Projection을 사용하여 피드와 회원정보 그리고 피드 종류 정보를 리스트로 받아왔습니다.
그 후, 받아온 리스트에서 피드 정보 식별자만 따로 추출한 후, 해당 식별자 기반으로 해당 피드에 사진 리스트가 있는지 DB에서 추가 조회를 한 후 식별자를 Key로, 사진 리스트를 Value로 유지하는 Map형태로 변환한 후, Map과 List를 new SliceImpl 로 반환하였습니다.
마지막으로 서비스에서 값을 반환시 response dto에서 slice에 들어있던 값을 꺼내서 list로 반환하도록 하였습니다.
++ 회원이 특정 피드에 좋아요와 댓글을 남긴경우 해당 댓글 및 좋아요 여부를 반환하는 컬럼을 응답 DTO에 추가하였습니다.
테스트 커버리지는 100%을 달성하였습니다.
스크린샷 (선택)
API 응답 사진: (API 응답 스크린샷을 첨부해주세요.)



API 명세서 사진: (API 명세서 스크린샷을 첨부해주세요.)







테스트 커버리지 사진: (테스트 커버리지 스크린샷을 첨부해주세요.)

Closes #499