Conversation
- 날짜별 통계 조회 시 발생하던 N+1 쿼리 문제 해결 - DailyCountQueryHelper를 통한 날짜별 그룹화 쿼리 공통 모듈 추가 - 각 도메인별 Repository에 날짜 범위 그룹화 조회 메서드 추가 - 통계 조회 시 날짜 수만큼 쿼리 호출 → 통계 타입당 1회 쿼리로 개선
|
Note
|
| 집단 / 파일(들) | 변경 요약 |
|---|---|
기본 집계 프로젝션 및 헬퍼 src/main/java/im/toduck/global/persistence/projection/DailyCount.java, src/main/java/im/toduck/global/persistence/helper/DailyCountQueryHelper.java |
새로운 DailyCount 레코드(LocalDate, Long count)와 QueryDSL 기반 일일 집계 쿼리 헬퍼 클래스 추가. countGroupByDate 정적 메서드로 DATE() 표현식을 통해 일일 카운트를 그룹화하여 반환. |
일기 도메인 src/main/java/im/toduck/domain/diary/domain/service/DiaryService.java, src/main/java/im/toduck/domain/diary/persistence/repository/DiaryRepository.java, src/main/java/im/toduck/domain/diary/persistence/repository/querydsl/DiaryRepositoryCustom.java, src/main/java/im/toduck/domain/diary/persistence/repository/querydsl/DiaryRepositoryCustomImpl.java |
getDiaryCountByDateRangeGroupByDate 서비스 메서드 추가. 저장소 인터페이스에 DiaryRepositoryCustom 확장 및 countByCreatedAtBetweenGroupByDate 메서드 구현 추가. |
루틴 도메인 src/main/java/im/toduck/domain/routine/domain/service/RoutineService.java, src/main/java/im/toduck/domain/routine/persistence/repository/querydsl/RoutineRepositoryCustom.java, src/main/java/im/toduck/domain/routine/persistence/repository/querydsl/RoutineRepositoryCustomImpl.java |
getRoutineCountByDateRangeGroupByDate 서비스 메서드 추가. 저장소 커스텀 인터페이스 및 구현에 countByCreatedAtBetweenGroupByDate 메서드 추가. |
일정 도메인 src/main/java/im/toduck/domain/schedule/domain/service/ScheduleReadService.java, src/main/java/im/toduck/domain/schedule/persistence/repository/querydsl/ScheduleRepositoryCustom.java, src/main/java/im/toduck/domain/schedule/persistence/repository/querydsl/ScheduleRepositoryCustomImpl.java |
getSchedulesCountByDateRangeGroupByDate 서비스 메서드 추가. 저장소 커스텀 인터페이스 및 구현에 countByCreatedAtBetweenGroupByDate 메서드 추가. |
소셜 도메인 src/main/java/im/toduck/domain/social/domain/service/SocialBoardService.java, src/main/java/im/toduck/domain/social/persistence/repository/querydsl/SocialRepositoryCustom.java, src/main/java/im/toduck/domain/social/persistence/repository/querydsl/SocialRepositoryCustomImpl.java, src/main/java/im/toduck/domain/social/persistence/repository/querydsl/CommentRepositoryCustom.java, src/main/java/im/toduck/domain/social/persistence/repository/querydsl/CommentRepositoryCustomImpl.java |
getSocialPostsCountByDateRangeGroupByDate와 getCommentsCountByDateRangeGroupByDate 서비스 메서드 추가. 게시물과 댓글 저장소 커스텀 인터페이스 및 구현에 countByCreatedAtBetweenGroupByDate 메서드 추가. |
사용자 도메인 src/main/java/im/toduck/domain/user/domain/service/UserService.java, src/main/java/im/toduck/domain/user/persistence/repository/querydsl/UserRepositoryCustom.java, src/main/java/im/toduck/domain/user/persistence/repository/querydsl/UserRepositoryCustomImpl.java |
getNewUsersCountByDateRangeGroupByDate와 getDeletedUsersCountByDateRangeGroupByDate 서비스 메서드 추가. 저장소 커스텀 인터페이스 및 구현에 countNewUsersByDateBetweenGroupByDate, countDeletedUsersByDateBetweenGroupByDate 메서드 추가. |
통계 사용 사례 src/main/java/im/toduck/domain/backoffice/domain/usecase/StatisticsUseCase.java |
getMultiDateStatistics에서 사전 계산된 일일 카운트 맵(statisticsByType)을 활용하여 성능 최적화. 새로운 헬퍼 메서드 getDailyCountsByTypeAndDateRange 추가. MAX_STATISTICS_DATE_RANGE_DAYS 상수 및 관련 날짜 범위 검증 로직 제거. |
예상 코드 리뷰 노력
🎯 3 (보통) | ⏱️ ~20분
관련 가능성 있는 PR
- 백오피스 통계 API 쿼리 최적화 #159: 동일한
DailyCount/DailyCountQueryHelper추가 및countByCreatedAtBetweenGroupByDate메서드 패턴을 적용하고StatisticsUseCase를 리팩토링하는 동일한 코드 레벨 변경을 수행합니다. - 백오피스 기능 추가 #140: 같은 백오피스 통계 흐름을 수정하며,
StatisticsUseCase및 관련 일일 카운트 쿼리 플러밍을 다룹니다. - 게시글 검색 및 목록 조회 성능 개선 #147: 소셜 도메인(
SocialBoardService,SocialRepositoryCustomImpl)을 수정하여 날짜별 또는 소셜 ID별로 그룹화된 데이터 대량 조회 메서드 및 저장소 헬퍼를 추가합니다.
제안 라벨
✨ Feature
제안 검토자
- wafla
- kang20
시
🐰 일일 집계의 마법, 날짜별로 춤을 춘다네,
DailyCount 레코드가 데이터를 정렬하고,
QueryDSL 헬퍼는 쿼리를 맞춰가며,
여러 도메인이 하나의 패턴으로 노래한다,
통계는 더 빠르고, 더 밝게 빛난다! ✨
Pre-merge checks and finishing touches
❌ Failed checks (3 warnings)
| Check name | Status | Explanation | Resolution |
|---|---|---|---|
| Title check | 제목이 모호하고 구체적인 변경 내용을 전달하지 않습니다. 'Main <- Develop'은 단순한 브랜치 병합 방향만 나타낼 뿐 실제 작업 내용을 설명하지 않습니다. | PR의 주요 변경 사항을 명확하게 설명하는 구체적인 제목으로 변경해주세요. 예를 들어 '통계 조회 최적화 및 일별 집계 기능 추가' 같은 제목이 적합합니다. | |
| Description check | PR 설명이 완전히 작성되지 않았습니다. 템플릿에 요구되는 '작업 내용' 섹션과 선택 사항인 '리뷰 요구사항'이 모두 누락되어 있습니다. | 리포지토리 템플릿에 따라 작업 내용을 상세히 작성하고, 필요시 리뷰 요구사항을 추가해주세요. 스크린샷이나 예시도 함께 포함하면 도움이 됩니다. | |
| Docstring Coverage | Docstring coverage is 6.12% which is insufficient. The required threshold is 80.00%. | You can run @coderabbitai generate docstrings to improve docstring coverage. |
✨ 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
develop
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 @coderabbitai help to get the list of available commands and usage tips.
There was a problem hiding this comment.
Actionable comments posted: 1
Fix all issues with AI Agents 🤖
In
@src/main/java/im/toduck/domain/user/persistence/repository/querydsl/UserRepositoryCustomImpl.java:
- Line 3: 파일에 선언된 불필요한 import LocalDate를 제거하세요: UserRepositoryCustomImpl.java
상단의 "import java.time.LocalDate;"를 삭제하고, 프로젝트에서는 시간 관련 작업에 LocalDateTime을 사용하므로
해당 타입으로 대체하거나 참조가 없음을 확인한 뒤 불필요한 import를 제거해 컴파일 오류가 없는지 확인하세요.
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (2)
src/main/java/im/toduck/domain/backoffice/domain/usecase/StatisticsUseCase.java (2)
108-112: 날짜 범위 제한 검증이 제거되었는지 확인이 필요합니다.요약에 따르면
MAX_STATISTICS_DATE_RANGE_DAYS상수와 관련 검증 로직이 제거되었습니다. 현재는 시작일이 종료일보다 이후인지만 검증하고 있어, 수년 단위의 매우 큰 날짜 범위 요청이 가능합니다. 이는 다음과 같은 문제를 야기할 수 있습니다:
- 89-98번 라인의 while 루프에서 과도한 메모리 사용
- 데이터베이스 쿼리 성능 저하
- 응답 시간 증가로 인한 사용자 경험 저하
날짜 범위에 대한 최대 제한(예: 90일 또는 365일)을 다시 추가하는 것을 권장합니다.
#!/bin/bash # Description: MAX_STATISTICS_DATE_RANGE_DAYS 상수가 이전에 존재했는지, 그리고 현재 제거된 검증 로직을 확인합니다. # 이전 커밋에서 MAX_STATISTICS_DATE_RANGE_DAYS 상수 검색 echo "=== Checking git history for MAX_STATISTICS_DATE_RANGE_DAYS ===" git log --all -p -S "MAX_STATISTICS_DATE_RANGE_DAYS" -- "*.java" | head -50 echo "" echo "=== Checking if any date range limit exists in current code ===" rg -n "MAX.*DAYS|ChronoUnit|between.*days" src/main/java/im/toduck/domain/backoffice/
114-124: 사용되지 않는 메서드는 제거하세요.
getStatisticsCountByTypeAndDate메서드가 코드베이스 내에서 호출되지 않습니다.getStatisticsCountByTypeAndDateRange는 존재하고 사용 중이지만, 이 메서드는 더 이상 필요 없으므로 삭제해야 합니다.
🧹 Nitpick comments (3)
src/main/java/im/toduck/domain/schedule/domain/service/ScheduleReadService.java (1)
81-94: 날짜별 집계를 위한 깔끔한 서비스 메서드입니다.구현이 명확하고 올바르게 동작합니다.
DailyCountQueryHelper가 날짜별로 그룹화하므로 중복 키 문제는 발생하지 않을 것으로 예상됩니다.선택사항: 더 안전한 toMap 사용
만약 향후 중복 날짜에 대한 방어 로직이 필요하다면, merge function을 추가할 수 있습니다:
-return dailyCounts.stream().collect(Collectors.toMap(DailyCount::date, DailyCount::count)); +return dailyCounts.stream() + .collect(Collectors.toMap(DailyCount::date, DailyCount::count, Long::sum));하지만 현재 구조에서는 중복이 발생하지 않으므로 선택사항입니다.
src/main/java/im/toduck/global/persistence/helper/DailyCountQueryHelper.java (1)
55-60: 잠재적 NPE: tuple에서 null 값 처리 필요 여부 검토
tuple.get(dateExpr)또는tuple.get(countExpr)가 null을 반환할 경우NullPointerException이 발생할 수 있습니다. GROUP BY 쿼리 특성상 null 결과가 나오기 어렵지만, 방어적 코딩 관점에서 확인이 필요합니다.🔎 방어적 null 처리 제안
return tuples.stream() - .map(tuple -> new DailyCount( - tuple.get(dateExpr).toLocalDate(), - tuple.get(countExpr) - )) + .filter(tuple -> tuple.get(dateExpr) != null && tuple.get(countExpr) != null) + .map(tuple -> new DailyCount( + tuple.get(dateExpr).toLocalDate(), + tuple.get(countExpr) + )) .toList();src/main/java/im/toduck/domain/user/domain/service/UserService.java (1)
176-207: LGTM! 기존 서비스 메서드와 일관된 패턴
getNewUsersCountByDateRange(라인 153-158) 및getDeletedUsersCountByDateRange(라인 160-165)와 동일한 날짜 변환 패턴을 사용하며, 그룹화된 결과를 Map으로 변환하는 로직이 일관됩니다.날짜 변환(
LocalDate→LocalDateTime) 및List<DailyCount>→Map<LocalDate, Long>변환 로직이 여러 서비스(DiaryService, SocialBoardService, UserService 등)에서 반복됩니다. 필요시 공통 유틸리티로 추출을 고려해 볼 수 있습니다.
📜 Review details
Configuration used: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (21)
src/main/java/im/toduck/domain/backoffice/domain/usecase/StatisticsUseCase.javasrc/main/java/im/toduck/domain/diary/domain/service/DiaryService.javasrc/main/java/im/toduck/domain/diary/persistence/repository/DiaryRepository.javasrc/main/java/im/toduck/domain/diary/persistence/repository/querydsl/DiaryRepositoryCustom.javasrc/main/java/im/toduck/domain/diary/persistence/repository/querydsl/DiaryRepositoryCustomImpl.javasrc/main/java/im/toduck/domain/routine/domain/service/RoutineService.javasrc/main/java/im/toduck/domain/routine/persistence/repository/querydsl/RoutineRepositoryCustom.javasrc/main/java/im/toduck/domain/routine/persistence/repository/querydsl/RoutineRepositoryCustomImpl.javasrc/main/java/im/toduck/domain/schedule/domain/service/ScheduleReadService.javasrc/main/java/im/toduck/domain/schedule/persistence/repository/querydsl/ScheduleRepositoryCustom.javasrc/main/java/im/toduck/domain/schedule/persistence/repository/querydsl/ScheduleRepositoryCustomImpl.javasrc/main/java/im/toduck/domain/social/domain/service/SocialBoardService.javasrc/main/java/im/toduck/domain/social/persistence/repository/querydsl/CommentRepositoryCustom.javasrc/main/java/im/toduck/domain/social/persistence/repository/querydsl/CommentRepositoryCustomImpl.javasrc/main/java/im/toduck/domain/social/persistence/repository/querydsl/SocialRepositoryCustom.javasrc/main/java/im/toduck/domain/social/persistence/repository/querydsl/SocialRepositoryCustomImpl.javasrc/main/java/im/toduck/domain/user/domain/service/UserService.javasrc/main/java/im/toduck/domain/user/persistence/repository/querydsl/UserRepositoryCustom.javasrc/main/java/im/toduck/domain/user/persistence/repository/querydsl/UserRepositoryCustomImpl.javasrc/main/java/im/toduck/global/persistence/helper/DailyCountQueryHelper.javasrc/main/java/im/toduck/global/persistence/projection/DailyCount.java
🧰 Additional context used
🧬 Code graph analysis (2)
src/main/java/im/toduck/domain/diary/persistence/repository/querydsl/DiaryRepositoryCustomImpl.java (5)
src/main/java/im/toduck/domain/routine/persistence/repository/querydsl/RoutineRepositoryCustomImpl.java (1)
Repository(23-156)src/main/java/im/toduck/domain/schedule/persistence/repository/querydsl/ScheduleRepositoryCustomImpl.java (1)
Repository(18-71)src/main/java/im/toduck/domain/social/persistence/repository/querydsl/CommentRepositoryCustomImpl.java (1)
Repository(27-102)src/main/java/im/toduck/domain/social/persistence/repository/querydsl/SocialRepositoryCustomImpl.java (1)
Repository(22-149)src/main/java/im/toduck/domain/user/persistence/repository/querydsl/UserRepositoryCustomImpl.java (1)
Repository(27-291)
src/main/java/im/toduck/domain/diary/persistence/repository/DiaryRepository.java (1)
src/main/java/im/toduck/domain/diary/persistence/repository/querydsl/DiaryRepositoryCustomImpl.java (1)
Repository(15-30)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (2)
- GitHub Check: CI
- GitHub Check: build-and-upload
🔇 Additional comments (25)
src/main/java/im/toduck/domain/backoffice/domain/usecase/StatisticsUseCase.java (2)
81-84: 성능 개선이 잘 적용되었습니다.타입별로 일별 카운트를 미리 계산하여 Map에 저장하는 방식으로 변경하여, N개의 날짜와 M개의 타입에 대해 O(N*M)번의 쿼리를 O(M)번으로 줄였습니다. 대용량 날짜 범위 조회 시 성능이 크게 향상될 것으로 예상됩니다.
154-168: 새로운 헬퍼 메서드가 잘 구현되었습니다.각 통계 타입별로 날짜 범위에 대한 일별 카운트를 그룹화하여 반환하는 로직이 명확하게 구현되어 있습니다. 각 도메인 서비스의 일관된 메서드 네이밍(
*CountByDateRangeGroupByDate)을 사용하고 있어 가독성이 좋습니다.src/main/java/im/toduck/global/persistence/projection/DailyCount.java (1)
1-13: 깔끔한 Projection 구현입니다.일별 집계 결과를 표현하는 간단하고 명확한 레코드 타입입니다. QueryDSL의 Projections와 함께 사용하기에 적합하며, 불변성을 보장하는 레코드 타입 선택도 좋습니다.
src/main/java/im/toduck/domain/social/persistence/repository/querydsl/SocialRepositoryCustom.java (1)
33-36: 일관된 커스텀 쿼리 패턴을 따르고 있습니다.새로 추가된
countByCreatedAtBetweenGroupByDate메서드는 다른 도메인의 커스텀 리포지토리들과 동일한 네이밍 컨벤션과 시그니처를 사용하고 있어 코드베이스 전체의 일관성이 유지됩니다.src/main/java/im/toduck/domain/social/persistence/repository/querydsl/CommentRepositoryCustom.java (1)
18-21: 커스텀 쿼리 메서드가 일관되게 추가되었습니다.댓글 도메인에도 동일한 일별 집계 패턴이 적용되었습니다. 다른 도메인들(Diary, Routine, Schedule, User 등)과 일관된 인터페이스를 유지하고 있습니다.
src/main/java/im/toduck/domain/diary/persistence/repository/DiaryRepository.java (1)
14-19: Spring Data JPA 커스텀 리포지토리 패턴이 올바르게 적용되었습니다.
DiaryRepository가DiaryRepositoryCustom을 확장하여 표준 JPA 메서드와 커스텀 쿼리 메서드를 모두 제공할 수 있게 되었습니다. Spring Data JPA의 권장 패턴을 따르고 있습니다.src/main/java/im/toduck/domain/routine/persistence/repository/querydsl/RoutineRepositoryCustom.java (2)
4-4: LGTM!새로운 메서드 시그니처에 필요한 import가 올바르게 추가되었습니다.
Also applies to: 10-10
31-34: 일관된 패턴으로 잘 구현되었습니다.다른 도메인(Diary, Schedule)과 동일한 패턴을 따르는 메서드 선언으로, 코드베이스 전체에서 일관성을 유지하고 있습니다.
src/main/java/im/toduck/domain/diary/persistence/repository/querydsl/DiaryRepositoryCustom.java (1)
1-13: LGTM!깔끔하고 명확한 커스텀 Repository 인터페이스입니다. 다른 도메인들과 일관된 구조를 따르고 있습니다.
src/main/java/im/toduck/domain/schedule/persistence/repository/querydsl/ScheduleRepositoryCustom.java (2)
4-4: LGTM!새로운 메서드에 필요한 import가 적절하게 추가되었습니다.
Also applies to: 8-8
13-16: 일관된 패턴으로 잘 구현되었습니다.다른 도메인들과 동일한 시그니처를 사용하여 코드베이스 전체의 일관성을 유지하고 있습니다.
src/main/java/im/toduck/domain/schedule/persistence/repository/querydsl/ScheduleRepositoryCustomImpl.java (2)
4-4: LGTM!구현에 필요한 import가 모두 적절하게 추가되었습니다.
Also applies to: 14-15
62-70: 헬퍼 클래스를 활용한 깔끔한 구현입니다.
DailyCountQueryHelper를 사용하여 코드 중복을 방지하고 있으며, 구현이 명확합니다.src/main/java/im/toduck/domain/schedule/domain/service/ScheduleReadService.java (1)
8-8: LGTM!새로운 서비스 메서드에 필요한 import가 적절하게 추가되었습니다.
Also applies to: 10-10, 25-25
src/main/java/im/toduck/domain/social/persistence/repository/querydsl/CommentRepositoryCustomImpl.java (1)
93-101: 구현이 올바르게 작성되었습니다.
DailyCountQueryHelper를 사용한 일자별 그룹화 카운트 구현이 다른 도메인의 패턴과 일관성 있게 작성되었습니다. 파라미터 전달과 반환 타입이 모두 적절합니다.src/main/java/im/toduck/domain/social/persistence/repository/querydsl/SocialRepositoryCustomImpl.java (1)
140-148: 구현이 올바르게 작성되었습니다.
Social엔티티에 대한 일자별 그룹화 카운트 기능이 다른 리포지토리 구현체와 동일한 패턴으로 정확하게 구현되었습니다.src/main/java/im/toduck/domain/routine/domain/service/RoutineService.java (1)
181-195: 서비스 메서드가 올바르게 구현되었습니다.날짜 범위를
LocalDateTime으로 변환하는 로직(atStartOfDay(),atTime(LocalTime.MAX))이 정확하며,List<DailyCount>를Map<LocalDate, Long>으로 변환하는 스트림 처리도 적절합니다.src/main/java/im/toduck/domain/routine/persistence/repository/querydsl/RoutineRepositoryCustomImpl.java (1)
147-155: 구현이 올바르게 작성되었습니다.
Routine엔티티에 대한 일자별 그룹화 카운트 기능이DailyCountQueryHelper를 활용하여 일관된 패턴으로 구현되었습니다.@Override어노테이션으로 인터페이스 계약을 준수하고 있습니다.src/main/java/im/toduck/domain/user/persistence/repository/querydsl/UserRepositoryCustom.java (1)
45-53: 인터페이스 메서드 선언이 적절하며, 구현이 올바르게 완료되었습니다.
countNewUsersByDateBetweenGroupByDate()와countDeletedUsersByDateBetweenGroupByDate()메서드가 명확하게 선언되었으며,UserRepositoryCustomImpl에서 일치하는 서명으로 올바르게 구현되어 있습니다. 메서드는UserService에서 활발히 사용되고 있습니다.src/main/java/im/toduck/domain/diary/domain/service/DiaryService.java (1)
149-164: LGTM! 일관된 패턴으로 구현되었습니다.기존
getDiaryCountByDateRange메서드와 동일한 날짜 변환 패턴을 사용하며,DailyCount프로젝션을Map으로 변환하는 로직이 깔끔합니다. 다른 서비스(UserService, SocialBoardService 등)와 일관된 구현입니다.src/main/java/im/toduck/global/persistence/helper/DailyCountQueryHelper.java (2)
44-45: DATE() 함수의 데이터베이스 호환성 확인
DATE({0})함수는 MySQL, PostgreSQL, H2에서 지원되지만, 프로덕션과 테스트 환경에서 사용하는 데이터베이스가 이 함수를 지원하는지 확인해 주세요.
18-23: 코드 중복 제거를 위한 좋은 추상화여러 리포지토리(Diary, User, Social, Schedule, Routine, Comment)에서 반복되던 GROUP BY DATE 쿼리 로직을 공통 헬퍼로 추출하여 유지보수성을 높였습니다.
src/main/java/im/toduck/domain/user/persistence/repository/querydsl/UserRepositoryCustomImpl.java (1)
271-290: LGTM! DailyCountQueryHelper를 활용한 일관된 구현
countNewUsersByDateBetweenGroupByDate와countDeletedUsersByDateBetweenGroupByDate메서드가 공통 헬퍼를 사용하여 깔끔하게 구현되었습니다. 다른 리포지토리 구현(ScheduleRepositoryCustomImpl, CommentRepositoryCustomImpl 등)과 일관된 패턴입니다.src/main/java/im/toduck/domain/diary/persistence/repository/querydsl/DiaryRepositoryCustomImpl.java (1)
15-30: LGTM! 프로젝트 패턴에 맞는 깔끔한 구현다른 리포지토리 커스텀 구현체(ScheduleRepositoryCustomImpl, CommentRepositoryCustomImpl, SocialRepositoryCustomImpl, RoutineRepositoryCustomImpl)와 동일한 패턴으로 구현되었습니다.
DailyCountQueryHelper로의 위임이 적절합니다.src/main/java/im/toduck/domain/social/domain/service/SocialBoardService.java (1)
291-322: LGTM! 기존 메서드와 일관된 구현
getSocialPostsCountByDateRange(라인 278-283) 및getCommentsCountByDateRange(라인 285-290)와 동일한 패턴을 따르며, 그룹화된 일별 카운트 기능을 추가합니다.socialRepository와commentRepository를 적절히 활용합니다.
| @@ -1,5 +1,6 @@ | |||
| package im.toduck.domain.user.persistence.repository.querydsl; | |||
|
|
|||
| import java.time.LocalDate; | |||
There was a problem hiding this comment.
🧩 Analysis chain
🏁 Script executed:
#!/bin/bash
rg -n "LocalDate[^T]" src/main/java/im/toduck/domain/user/persistence/repository/querydsl/UserRepositoryCustomImpl.javaRepository: toduck-App/toduck-backend
Length of output: 98
🏁 Script executed:
cat -n src/main/java/im/toduck/domain/user/persistence/repository/querydsl/UserRepositoryCustomImpl.javaRepository: toduck-App/toduck-backend
Length of output: 10463
사용되지 않는 import 제거
LocalDate import(3번 줄)가 파일 어디에서도 사용되지 않습니다. 모든 시간 관련 작업은 LocalDateTime을 사용하므로 이 import를 제거해주세요.
🤖 Prompt for AI Agents
In
@src/main/java/im/toduck/domain/user/persistence/repository/querydsl/UserRepositoryCustomImpl.java
around line 3, 파일에 선언된 불필요한 import LocalDate를 제거하세요:
UserRepositoryCustomImpl.java 상단의 "import java.time.LocalDate;"를 삭제하고, 프로젝트에서는
시간 관련 작업에 LocalDateTime을 사용하므로 해당 타입으로 대체하거나 참조가 없음을 확인한 뒤 불필요한 import를 제거해 컴파일
오류가 없는지 확인하세요.
Summary by CodeRabbit
릴리스 노트
새로운 기능
리팩토링
✏️ Tip: You can customize this high-level summary in your review settings.