Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Open
seokjin8678 opened this issue Apr 16, 2024 · 2 comments
Labels
BE 백엔드에 관련된 작업 🛠 수정 수정에 관련된 작업

Comments

@seokjin8678
Copy link
Collaborator

✨ 세부 내용

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 seokjin8678 added BE 백엔드에 관련된 작업 🛠 수정 수정에 관련된 작업 labels Apr 16, 2024
@seokjin8678
Copy link
Collaborator Author

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

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

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

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

@seokjin8678
Copy link
Collaborator Author

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
BE 백엔드에 관련된 작업 🛠 수정 수정에 관련된 작업
Projects
Status: Todo
Development

No branches or pull requests

1 participant