Skip to content

[Fix] 휴지통 폴더 목록 materialCount가 항상 0으로 나오던 문제 수정 - #140

Merged
hwiyoon20010309 merged 2 commits into
mainfrom
fix/trash-folder-material-count-always-zero
Aug 11, 2026
Merged

hwiyoon20010309 merged 2 commits into
mainfrom
fix/trash-folder-material-count-always-zero

Conversation

@EH-OI

@EH-OI EH-OI commented Aug 11, 2026 •

Copy link
Copy Markdown
Collaborator

✨ 어떤 이유로 PR를 하셨나요?

  • feature 병합
  • 버그 수정(아래에 issue #를 남겨주세요)
  • 코드 개선
  • 코드 수정
  • 배포
  • 기타(아래에 자세한 내용 기입해주세요)

📋 세부 내용 - 왜 해당 PR이 필요한지 작업 내용을 자세하게 설명해주세요

휴지통 폴더 목록 API(GET /api/v1/trash/folders)에서 materialCount가 항상 0으로 조회되던 문제를 수정했습니다.

변경 사항

  • MaterialRepository에 countDeletedByFolderIdsAndUserId 추가 — 폴더 ID 목록별로 삭제된 자료 개수를 batch COUNT
  • TrashService.getTrashedFolders()가 이 쿼리로 실시간 개수를 계산해 TrashFolderItemResponse에 전달하도록 변경 (기존 Folder.itemCount 참조 제거)
  • Folder.itemCount 필드 자체는 DB 컬럼이 NOT NULL이고 기본값이 없어 제거 시 폴더 생성이 깨지므로 유지하되, "읽지 말 것" 주석 추가
  • TrashServiceTest에 회귀 테스트 3건 추가

📸 작업 화면 스크린샷

⚠️ PR하기 전에 확인해주세요

  • 로컬테스트를 진행하셨나요?
  • 머지할 브랜치를 확인하셨나요?
  • 관련 label을 선택하셨나요?

🚨 관련 이슈 번호 [ ]

Summary by CodeRabbit

  • 버그 수정
    • 휴지통 폴더 목록에서 폴더별 삭제된 자료 개수가 실제 집계값으로 표시됩니다.
    • 삭제된 자료가 없는 폴더는 자료 수가 0으로 표시됩니다.
    • 휴지통 폴더가 없을 때 불필요한 자료 수 조회를 수행하지 않습니다.

@coderabbitai

coderabbitai Bot commented Aug 11, 2026 •

Copy link
Copy Markdown

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 5dcbf5d3-895b-4e1b-a57e-0bb44ceb169d

📥 Commits

Reviewing files that changed from the base of the PR and between db5c46b and d5d68b5.

📒 Files selected for processing (1)
  • src/test/java/com/teaching/backend/domain/material/repository/MaterialRepositoryTest.java

📝 Walkthrough

Walkthrough

휴지통 폴더 목록이 Folder.itemCount 대신 사용자별 삭제 자료를 폴더별로 집계합니다. 집계 결과를 TrashFolderItemResponse에 전달합니다. 관련 서비스와 저장소 동작을 테스트합니다.

Changes

휴지통 자료 수 집계

Layer / File(s) Summary
삭제 자료 집계 및 응답 계약
src/main/java/com/teaching/backend/domain/folder/entity/Folder.java, src/main/java/com/teaching/backend/domain/material/repository/MaterialRepository.java, src/main/java/com/teaching/backend/domain/trash/dto/response/TrashFolderItemResponse.java
MaterialRepository가 사용자와 폴더별 삭제 자료 수를 조회합니다. TrashFolderItemResponse.from은 집계된 materialCount를 받습니다.
휴지통 목록 연결 및 검증
src/main/java/com/teaching/backend/domain/trash/service/TrashService.java, src/test/java/com/teaching/backend/domain/trash/service/TrashServiceTest.java, src/test/java/com/teaching/backend/domain/material/repository/MaterialRepositoryTest.java
TrashService가 폴더별 집계 결과를 응답에 반영합니다. 빈 목록에서는 자료 수 조회를 생략하고, 집계 결과가 없으면 0L을 사용합니다. 저장소 테스트는 삭제 자료와 사용자별 집계를 검증합니다.

Estimated code review effort: 2 (Simple) | ~10 minutes

Sequence Diagram(s)

sequenceDiagram
  participant Client
  participant TrashService
  participant MaterialRepository
  participant TrashFolderItemResponse
  Client->>TrashService: 휴지통 폴더 목록 요청
  TrashService->>MaterialRepository: 삭제 자료를 폴더별로 집계
  MaterialRepository-->>TrashService: 폴더별 삭제 자료 수
  TrashService->>TrashFolderItemResponse: folder와 materialCount 전달
  TrashFolderItemResponse-->>Client: 휴지통 폴더 목록 응답
Loading

Possibly related PRs

  • TeachING-Dev/Backend#13: 폴더 및 휴지통 응답 흐름을 추가했으며, 본 변경은 해당 흐름에 삭제 자료 수 집계를 확장합니다.
  • TeachING-Dev/Backend#105: TrashFolderItemResponse, TrashService, MaterialRepository의 휴지통 폴더 자료 수 처리를 함께 변경합니다.
  • TeachING-Dev/Backend#130: 휴지통 폴더별 삭제 자료 집계와 동일한 저장소·서비스 흐름을 다룹니다.

Suggested reviewers: m00nsh, hwiyoon20010309

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed 휴지통 폴더 목록의 materialCount가 항상 0으로 반환되던 문제를 수정하는 변경 사항을 정확히 설명합니다.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ 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 fix/trash-folder-material-count-always-zero

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.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🧹 Nitpick comments (1)
src/main/java/com/teaching/backend/domain/material/repository/MaterialRepository.java (1)

290-305: 🗄️ Data Integrity & Integration | 🔵 Trivial | 🏗️ Heavy lift

네이티브 집계 쿼리를 저장소 통합 테스트로 검증하세요.

현재 추가된 TrashServiceTest는 MaterialRepository를 mock하므로 Line 293-298의 folder_id, user_id, deleted_at, GROUP BY 조건과 folderId 및 materialCount projection 매핑을 검증하지 않습니다. 기존 src/test/java/com/teaching/backend/domain/material/repository/MaterialRepositoryTest.java에 실제 데이터베이스를 사용하는 테스트가 없다면, 여러 사용자와 폴더의 활성·삭제 자료를 포함한 시나리오를 추가하고 폴더별 집계 결과를 확인하세요.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In
`@src/main/java/com/teaching/backend/domain/material/repository/MaterialRepository.java`
around lines 290 - 305, Add an integration test in MaterialRepositoryTest for
countDeletedByFolderIdsAndUserId using a real database, seeding multiple users
and folders with both active and deleted materials. Verify only the requested
user’s deleted materials are counted per folder, and assert the
FolderMaterialRestoreCountProjection folderId and materialCount mappings.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Nitpick comments:
In
`@src/main/java/com/teaching/backend/domain/material/repository/MaterialRepository.java`:
- Around line 290-305: Add an integration test in MaterialRepositoryTest for
countDeletedByFolderIdsAndUserId using a real database, seeding multiple users
and folders with both active and deleted materials. Verify only the requested
user’s deleted materials are counted per folder, and assert the
FolderMaterialRestoreCountProjection folderId and materialCount mappings.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro Plus

Run ID: b5769f7f-44ae-40cd-b1bd-c183a45834d7

📥 Commits

Reviewing files that changed from the base of the PR and between 66cdfbe and db5c46b.

📒 Files selected for processing (5)
  • src/main/java/com/teaching/backend/domain/folder/entity/Folder.java
  • src/main/java/com/teaching/backend/domain/material/repository/MaterialRepository.java
  • src/main/java/com/teaching/backend/domain/trash/dto/response/TrashFolderItemResponse.java
  • src/main/java/com/teaching/backend/domain/trash/service/TrashService.java
  • src/test/java/com/teaching/backend/domain/trash/service/TrashServiceTest.java

@EH-OI

EH-OI commented Aug 11, 2026

Copy link
Copy Markdown
Collaborator Author

@coderabbitai rate limit

@coderabbitai

coderabbitai Bot commented Aug 11, 2026

Copy link
Copy Markdown

Your plan includes PR reviews subject to rate limits. More reviews will be available in 50 minutes.

@EH-OI

EH-OI commented Aug 11, 2026

Copy link
Copy Markdown
Collaborator Author

@coderabbitai review

@coderabbitai

coderabbitai Bot commented Aug 11, 2026 •

Copy link
Copy Markdown
✅ Action performed

Review finished.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

@EH-OI
EH-OI requested review from Mymyseoyoung, hwiyoon20010309 and m00nsh and removed request for Mymyseoyoung, hwiyoon20010309 and m00nsh August 11, 2026 07:01
@hwiyoon20010309
hwiyoon20010309 merged commit 542015b into main Aug 11, 2026
2 checks passed
@Mymyseoyoung Mymyseoyoung changed the title fix: 휴지통 폴더 목록 materialCount가 항상 0으로 나오던 문제 수정 [Fix] 휴지통 폴더 목록 materialCount가 항상 0으로 나오던 문제 수정 Aug 12, 2026
@EH-OI EH-OI added the 🪛fix 버그 수정 label Aug 13, 2026
@EH-OI
EH-OI deleted the fix/trash-folder-material-count-always-zero branch August 13, 2026 10:47
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

🪛fix 버그 수정

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants