Skip to content

Commit bd9c72e

Browse files
authored
Merge pull request #167 from GTable/fix#166-fix-NonUniqueResultException
fix(Reservation): NonUniqueResultException 문제 해결
2 parents 4742725 + bdf3e5e commit bd9c72e

2 files changed

Lines changed: 5 additions & 1 deletion

File tree

nowait-app-admin-api/src/main/java/com/nowait/applicationadmin/reservation/service/ReservationService.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,7 @@ public List<WaitingUserResponse> getAllWaitingUserDetails(Long storeId) {
9494
List<ZSetOperations.TypedTuple<String>> waitingList = waitingRedisRepository.getAllWaitingWithScore(storeId);
9595
System.out.println(waitingList);
9696

97+
// TODO N + 1 발생 -> 개선 필요
9798
return waitingList.stream()
9899
.map(tuple -> {
99100
String userId = tuple.getValue();
@@ -109,7 +110,7 @@ public List<WaitingUserResponse> getAllWaitingUserDetails(Long storeId) {
109110
String reservationId = String.valueOf(
110111
ThreadLocalRandom.current().nextInt(1, 100));
111112

112-
Optional<Reservation> reservationOpt = reservationRepository.findByStore_StoreIdAndUserIdAndRequestedAtBetween(
113+
Optional<Reservation> reservationOpt = reservationRepository.findFirstByStore_StoreIdAndUserIdAndRequestedAtBetweenOrderByRequestedAtDesc(
113114
storeId, Long.valueOf(userId), LocalDate.now().atStartOfDay(), LocalDate.now().atTime(LocalTime.MAX));
114115
if (reservationOpt.isPresent()) {
115116
Reservation reservation = reservationOpt.get();

nowait-domain/domain-core-rdb/src/main/java/com/nowait/domaincorerdb/reservation/repository/ReservationRepository.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,9 @@ public interface ReservationRepository extends JpaRepository<Reservation, Long>
2222
Optional<Reservation> findByStore_StoreIdAndUserIdAndRequestedAtBetween(
2323
Long storeId, Long userId, LocalDateTime start, LocalDateTime end);
2424

25+
Optional<Reservation> findFirstByStore_StoreIdAndUserIdAndRequestedAtBetweenOrderByRequestedAtDesc(
26+
Long storeId, Long userId, LocalDateTime start, LocalDateTime end);
27+
2528
List<Reservation> findAllByStore_StoreIdAndStatusInAndRequestedAtBetween(
2629
Long storeId, List<ReservationStatus> statuses, LocalDateTime start, LocalDateTime end);
2730
Optional<Reservation> findByStore_StoreIdAndUserIdAndStatusInAndRequestedAtBetween(

0 commit comments

Comments
 (0)