diff --git a/nowait-app-admin-api/src/main/java/com/nowait/applicationadmin/reservation/service/ReservationService.java b/nowait-app-admin-api/src/main/java/com/nowait/applicationadmin/reservation/service/ReservationService.java index e0177ccf..abae93f4 100644 --- a/nowait-app-admin-api/src/main/java/com/nowait/applicationadmin/reservation/service/ReservationService.java +++ b/nowait-app-admin-api/src/main/java/com/nowait/applicationadmin/reservation/service/ReservationService.java @@ -94,6 +94,7 @@ public List getAllWaitingUserDetails(Long storeId) { List> waitingList = waitingRedisRepository.getAllWaitingWithScore(storeId); System.out.println(waitingList); + // TODO N + 1 발생 -> 개선 필요 return waitingList.stream() .map(tuple -> { String userId = tuple.getValue(); @@ -109,7 +110,7 @@ public List getAllWaitingUserDetails(Long storeId) { String reservationId = String.valueOf( ThreadLocalRandom.current().nextInt(1, 100)); - Optional reservationOpt = reservationRepository.findByStore_StoreIdAndUserIdAndRequestedAtBetween( + Optional reservationOpt = reservationRepository.findFirstByStore_StoreIdAndUserIdAndRequestedAtBetweenOrderByRequestedAtDesc( storeId, Long.valueOf(userId), LocalDate.now().atStartOfDay(), LocalDate.now().atTime(LocalTime.MAX)); if (reservationOpt.isPresent()) { Reservation reservation = reservationOpt.get(); diff --git a/nowait-domain/domain-core-rdb/src/main/java/com/nowait/domaincorerdb/reservation/repository/ReservationRepository.java b/nowait-domain/domain-core-rdb/src/main/java/com/nowait/domaincorerdb/reservation/repository/ReservationRepository.java index 96c7639f..f3e74b38 100644 --- a/nowait-domain/domain-core-rdb/src/main/java/com/nowait/domaincorerdb/reservation/repository/ReservationRepository.java +++ b/nowait-domain/domain-core-rdb/src/main/java/com/nowait/domaincorerdb/reservation/repository/ReservationRepository.java @@ -22,6 +22,9 @@ public interface ReservationRepository extends JpaRepository Optional findByStore_StoreIdAndUserIdAndRequestedAtBetween( Long storeId, Long userId, LocalDateTime start, LocalDateTime end); + Optional findFirstByStore_StoreIdAndUserIdAndRequestedAtBetweenOrderByRequestedAtDesc( + Long storeId, Long userId, LocalDateTime start, LocalDateTime end); + List findAllByStore_StoreIdAndStatusInAndRequestedAtBetween( Long storeId, List statuses, LocalDateTime start, LocalDateTime end); Optional findByStore_StoreIdAndUserIdAndStatusInAndRequestedAtBetween(