Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,7 @@ long countStudyByConditionsAndThemeTypesAndNotInIds(
long countStudyByConditionsAndRegionStudiesAndNotInIds(
Map<String, Object> search, List<RegionStudy> regionStudies, StudySortBy sortBy, List<Long> studyIds);
long countStudyByConditions(Map<String, Object> search, StudySortBy sortBy);
long countRecruitingStudyByConditions(Map<String, Object> search, StudySortBy sortBy);
long countStudyByStudyTheme(List<StudyTheme> studyThemes, StudySortBy sortBy);

long countAllByTitleContaining(String title, StudySortBy sortBy);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -109,7 +110,7 @@ public List<Study> findRecruitingStudyByConditions(Map<String, Object> 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<Study> query = queryFactory.selectFrom(study)
.where(builder)
Expand Down Expand Up @@ -148,7 +149,7 @@ public List<Study> findStudyByConditionsAndThemeTypesAndNotInIds(Map<String, Obj
if (sortBy != null) {
switch (sortBy) {
case RECRUITING:
builder.and(study.studyState.eq(StudyState.RECRUITING));
builder.and(study.studyState.eq(RECRUITING));
break;
case COMPLETED:
builder.and(study.studyState.eq(StudyState.COMPLETED));
Expand Down Expand Up @@ -181,7 +182,7 @@ public List<Study> findStudyByConditionsAndRegionStudiesAndNotInIds(Map<String,
if (sortBy != null) {
switch (sortBy) {
case RECRUITING:
builder.and(study.studyState.eq(StudyState.RECRUITING));
builder.and(study.studyState.eq(RECRUITING));
break;
case COMPLETED:
builder.and(study.studyState.eq(StudyState.COMPLETED));
Expand Down Expand Up @@ -277,7 +278,7 @@ public List<Study> findRecruitingStudiesByMemberStudy(List<MemberStudy> 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();
Expand Down Expand Up @@ -316,6 +317,17 @@ public long countStudyByConditions(Map<String, Object> search, StudySortBy sortB
.fetchCount();
}

@Override
public long countRecruitingStudyByConditions(Map<String, Object> 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<StudyTheme> studyThemes, StudySortBy sortBy) {
BooleanBuilder builder = new BooleanBuilder();
Expand Down Expand Up @@ -356,7 +368,7 @@ public long countByMemberStudiesAndStatusAndIsOwned(List<MemberStudy> 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)));
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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());
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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을 모킹
Expand All @@ -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
Expand Down