hufscheer / spectator-server

7 stars 0 forks source link

[REFACTOR] 게임 목록 조회 커서 페이징 쿼리 개선 #100 #101

Closed ldk980130 closed 9 months ago

ldk980130 commented 9 months ago

🌍 이슈 번호

📝 구현 내용

기존에 스트링 concat을 기준으로 정렬 및 커서 페이징을 수행했던 것을 순수하게 and, or 조건 쿼리로 개선했습니다.

아래 처럼 BooleanBuilderand() 메서드 하나에 조건들을 넣으면 괄호를 씌울 수 있는 것을 확인해서 개선해보았습니다.

        DynamicBooleanBuilder booleanBuilder = DynamicBooleanBuilder.builder()
                .and(() -> game.league.id.eq(gamesQueryRequestDto.getLeagueId()))
                .and(() -> game.state.eq(state))
                .and(() -> game.sport.id.in(gamesQueryRequestDto.getSportIds()));
        if (state == GameState.FINISHED) {
            return booleanBuilder
                    .and(() -> game.startTime.eq(cursorStartTime).and(game.id.lt(cursor))
                            .or(game.startTime.lt(cursorStartTime)))
                    .build();
        }
image

테스트는 전부 통과합니다

🍀 확인해야 할 부분