woowacourse-teams / 2023-festa-go

🎪 페스타고, 대학 축제를 더욱 즐겁게!
71 stars 8 forks source link

[BE] SchoolV1QueryDslRepository의 addPagingOption 메서드를 수정한다. #862

Open seokjin8678 opened 5 months ago

seokjin8678 commented 5 months ago

✨ 세부 내용

SchoolV1QueryDslRepository에서 addPagingOption 메서드는 다음과 같이 구현되어 있습니다.

private BooleanExpression addPagingOption(Long lastFestivalId, LocalDate lastStartDate, boolean isPast) {
    if (isNotFirstPage(lastFestivalId, lastStartDate)) {
        if (isPast) {
            return festival.startDate.lt(lastStartDate)
                .or(festival.startDate.eq(lastStartDate)
                    .and(festival.id.gt(lastFestivalId)));
        }
        return festival.startDate.gt(lastStartDate)
            .or(festival.startDate.eq(lastStartDate)
                .and(festival.id.gt(lastFestivalId)));
    }

    return null;
}

보시면 if (isPast) 분기문을 타거나, 타지 않아도 같은 결과를 반환합니다.

따라서 해당 구현을 올바르게 수정합니다.

⏰ 예상 소요 시간

2시간

seokjin8678 commented 5 months ago

추가로 진행 중 + 진행 예정 축제에 과연 페이징 처리가 필요할까 싶네요.

모든 축제에 대해 진행 중 + 진행 예정 축제를 조회하는 것은 상당히 많은 데이터가 조회 되겠지만, 특정 학교의 진행 중 + 진행 예정 축제를 조회할 때 많아봤자 2~3건이 전부일 것 같습니다.

과거 축제의 경우도 페이징 처리가 과연 필요한지 싶은데... 데이터가 계속 쌓이기 때문에 전자의 경우와 다르겠지만, 1년에 생기는 축제가 3~4개라고 가정한다면, 서비스 기간 10년을 잡아도 30개 정도일지 싶습니다.

따라서 학교 식별자로 모든 축제를 조회하는 경우에 페이징 처리를 삭제해도 될 것 같습니다.

seokjin8678 commented 5 months ago

추가로 스케줄링을 활용한 캐싱을 적용할 수 있다면 더 효과적일 것 같네요. 진행 중 + 진행 예정 축제를 일정 주기(약 30분)마다 갱신한다면 큰 문제는 없을 것 같습니다. 과거 축제 또한 캐싱의 대상이 될 수 있을 것 같은데.. 굳이 필요하지 않을 것 같기도 하네요. 😂