[REFACTOR] AI 멘토 대화 내역 조회 N+1 쿼리 개선 - #164
Conversation
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: CHILL Plan: Pro Plus Run ID: 📒 Files selected for processing (3)
📝 WalkthroughWalkthrough분석 엔티티 전체 조회를 제거하고, 분석 ID로 소유자 ID만 조회하여 멘토 대화 이력의 소유권을 검증하도록 변경했습니다. 관련 테스트도 새 저장소 조회 흐름을 사용합니다. Changes멘토 대화 이력 소유권 조회
Estimated code review effort: 2 (Simple) | ~10 minutes Possibly related PRs
Poem
🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✨ Finishing Touches📝 Generate docstrings
🧪 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 |
rkdehdrbs7885-oss
left a comment
There was a problem hiding this comment.
만약 existsByIdAndUser_UserId(analysisId, userId)를 사용했다면 반환값이 true/false뿐이라서, false가 나왔을 때 이게 "해당 분석 데이터가 아예 존재하지 않아서(404)"인지, 아니면 "분석 데이터는 있는데 다른 유저의 것이라서(403)"인지 서버 입장에서 원인을 특정할 수 없습니다.
하지만 지금 작성해주신 findUserIdById 방식을 사용하면 데이터가 없으면 Optional.empty()가 반환되어 ANALYSIS_NOT_FOUND 예외를 정확히 던질 수 있고, 데이터는 있지만 주인이 다르면 MENTOR_ACCESS_DENIED 예외를 던질 수 있습니다.
수고하셨습니다!
📍 개요
⛓️💥 관련 이슈
🛠️ 작업 내용
AnalysisRepository에findUserIdById프로젝션 쿼리 추가MentorService.getMessageHistory()에서findById+ User lazy loading 대신findUserIdById로 소유자 검증을 단일 쿼리로 처리MentorServiceTest) 갱신🔥 리뷰 요청 사항
existsByIdAndUser_UserId대신findUserIdById로 owner id를 조회해 비교하는 방식으로 수정했는데, 이 방식이 적절한지✅ 체크리스트
📎 참고 사항
X
Summary by CodeRabbit
기능 개선
버그 수정