From 3d88ba9dd6adc147c0de1986415c176b2bbd328a Mon Sep 17 00:00:00 2001 From: msk226 Date: Sat, 14 Jun 2025 16:57:38 +0900 Subject: [PATCH 1/2] =?UTF-8?q?[SPOT-290][REFACTOR]=20=EB=AA=A8=EC=A7=91?= =?UTF-8?q?=20=EC=A4=91=20=EC=8A=A4=ED=84=B0=EB=94=94=20=EC=A1=B0=ED=9A=8C?= =?UTF-8?q?=20=EC=8B=9C,=20=EC=9D=91=EB=8B=B5=20DTO=20=EB=82=B4=20?= =?UTF-8?q?=ED=8E=98=EC=9D=B4=EC=A7=80=20=EA=B0=AF=EC=88=98=EC=99=80=20?= =?UTF-8?q?=EC=8B=A4=EC=A0=9C=20=EB=8D=B0=EC=9D=B4=ED=84=B0=20=EB=B6=88?= =?UTF-8?q?=EC=9D=BC=EC=B9=98=20=ED=95=B4=EA=B2=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../querydsl/StudyRepositoryCustom.java | 1 + .../impl/StudyRepositoryCustomImpl.java | 22 ++++++++++++++----- .../service/study/StudyQueryServiceImpl.java | 2 +- 3 files changed, 19 insertions(+), 6 deletions(-) diff --git a/src/main/java/com/example/spot/repository/querydsl/StudyRepositoryCustom.java b/src/main/java/com/example/spot/repository/querydsl/StudyRepositoryCustom.java index 13bb2171..74b87eee 100644 --- a/src/main/java/com/example/spot/repository/querydsl/StudyRepositoryCustom.java +++ b/src/main/java/com/example/spot/repository/querydsl/StudyRepositoryCustom.java @@ -47,6 +47,7 @@ long countStudyByConditionsAndThemeTypesAndNotInIds( long countStudyByConditionsAndRegionStudiesAndNotInIds( Map search, List regionStudies, StudySortBy sortBy, List studyIds); long countStudyByConditions(Map search, StudySortBy sortBy); + long countRecruitingStudyByConditions(Map search, StudySortBy sortBy); long countStudyByStudyTheme(List studyThemes, StudySortBy sortBy); long countAllByTitleContaining(String title, StudySortBy sortBy); diff --git a/src/main/java/com/example/spot/repository/querydsl/impl/StudyRepositoryCustomImpl.java b/src/main/java/com/example/spot/repository/querydsl/impl/StudyRepositoryCustomImpl.java index 472a63bf..b9defd60 100644 --- a/src/main/java/com/example/spot/repository/querydsl/impl/StudyRepositoryCustomImpl.java +++ b/src/main/java/com/example/spot/repository/querydsl/impl/StudyRepositoryCustomImpl.java @@ -27,6 +27,7 @@ import org.springframework.data.domain.PageImpl; import org.springframework.data.domain.Pageable; +import static com.example.spot.domain.enums.StudyState.RECRUITING; import static com.example.spot.domain.mapping.QMemberStudy.memberStudy; import static com.example.spot.domain.study.QStudy.study; @RequiredArgsConstructor @@ -109,7 +110,7 @@ public List findRecruitingStudyByConditions(Map search, S Pageable pageable) { BooleanBuilder builder = new BooleanBuilder(); getConditions(search, study, builder); - builder.and(study.studyState.eq(StudyState.RECRUITING)); + builder.and(study.studyState.eq(RECRUITING)); JPAQuery query = queryFactory.selectFrom(study) .where(builder) @@ -148,7 +149,7 @@ public List findStudyByConditionsAndThemeTypesAndNotInIds(Map findStudyByConditionsAndRegionStudiesAndNotInIds(Map findRecruitingStudiesByMemberStudy(List memberSt QStudy study = QStudy.study; return queryFactory.selectFrom(study) .where(study.memberStudies.any().in(memberStudy)) - .where(study.studyState.eq(StudyState.RECRUITING)) + .where(study.studyState.eq(RECRUITING)) .offset(pageable.getOffset()) .limit(pageable.getPageSize()) .fetch(); @@ -316,6 +317,17 @@ public long countStudyByConditions(Map search, StudySortBy sortB .fetchCount(); } + @Override + public long countRecruitingStudyByConditions(Map search, StudySortBy sortBy) { + BooleanBuilder builder = new BooleanBuilder(); + getConditions(search, study, builder); + getStudyState(sortBy, builder, study); + return queryFactory.selectFrom(study) + .where(builder) + .where(study.studyState.eq(RECRUITING)) + .fetchCount(); + } + @Override public long countStudyByStudyTheme(List studyThemes, StudySortBy sortBy) { BooleanBuilder builder = new BooleanBuilder(); @@ -356,7 +368,7 @@ public long countByMemberStudiesAndStatusAndIsOwned(List memberStud private static void getStudyState(StudySortBy sortBy, BooleanBuilder builder, QStudy study) { if (sortBy != null && sortBy.equals(StudySortBy.RECRUITING)) - builder.and(study.studyState.eq((StudyState.RECRUITING))); + builder.and(study.studyState.eq((RECRUITING))); if (sortBy != null && sortBy.equals(StudySortBy.COMPLETED)) builder.and(study.studyState.eq((StudyState.COMPLETED))); } diff --git a/src/main/java/com/example/spot/service/study/StudyQueryServiceImpl.java b/src/main/java/com/example/spot/service/study/StudyQueryServiceImpl.java index 078723b9..e77c9f3f 100644 --- a/src/main/java/com/example/spot/service/study/StudyQueryServiceImpl.java +++ b/src/main/java/com/example/spot/service/study/StudyQueryServiceImpl.java @@ -619,7 +619,7 @@ public StudyPreviewDTO findRecruitingStudiesByConditions( throw new StudyHandler(ErrorStatus._STUDY_IS_NOT_MATCH); // 전체 스터디 수 - long totalElements = studyRepository.countStudyByConditions(conditions, sortBy); + long totalElements = studyRepository.countRecruitingStudyByConditions(conditions, sortBy); return getDTOs(studies, pageable, totalElements, SecurityUtils.getCurrentUserId()); } From c30c63aa71f7e9ececf71b7d7742c4e9a0cf97c0 Mon Sep 17 00:00:00 2001 From: msk226 Date: Sat, 14 Jun 2025 17:00:46 +0900 Subject: [PATCH 2/2] =?UTF-8?q?[SPOT-290][REFACTOR]=20=EB=B3=80=EA=B2=BD?= =?UTF-8?q?=20=EC=82=AC=ED=95=AD=20=ED=85=8C=EC=8A=A4=ED=8A=B8=20=EC=BD=94?= =?UTF-8?q?=EB=93=9C=20=EB=B0=98=EC=98=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/example/spot/service/study/StudyQueryServiceTest.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/test/java/com/example/spot/service/study/StudyQueryServiceTest.java b/src/test/java/com/example/spot/service/study/StudyQueryServiceTest.java index b7a029c3..d8f31cb8 100644 --- a/src/test/java/com/example/spot/service/study/StudyQueryServiceTest.java +++ b/src/test/java/com/example/spot/service/study/StudyQueryServiceTest.java @@ -1479,7 +1479,7 @@ void findRecruitingStudiesByConditions() { when(studyRepository.findRecruitingStudyByConditions(searchConditions, sortBy, pageable)) .thenReturn(List.of(study1, study2)); - when(studyRepository.countStudyByConditions(searchConditions, sortBy)) + when(studyRepository.countRecruitingStudyByConditions(searchConditions, sortBy)) .thenReturn(2L); // SecurityContext와 Authentication을 모킹 @@ -1499,7 +1499,7 @@ void findRecruitingStudiesByConditions() { assertNotNull(result); assertEquals(2, result.getTotalElements()); // Verify the count of elements verify(studyRepository).findRecruitingStudyByConditions(searchConditions, sortBy, pageable); - verify(studyRepository).countStudyByConditions(searchConditions, sortBy); + verify(studyRepository).countRecruitingStudyByConditions(searchConditions, sortBy); } @Test