From 34fc7ca7d28d12a01636c76ac2b716e5bf381740 Mon Sep 17 00:00:00 2001 From: androidlover5842 Date: Sat, 31 Jan 2026 14:45:40 +0530 Subject: [PATCH] Fix booking snapshot lazy loading --- .../trisolarisserver/controller/BookingSnapshotBuilder.kt | 4 ++-- .../com/android/trisolarisserver/db/repo/BookingRepo.kt | 3 +++ .../com/android/trisolarisserver/repo/RoomStayRepo.kt | 8 ++++++++ 3 files changed, 13 insertions(+), 2 deletions(-) diff --git a/src/main/kotlin/com/android/trisolarisserver/controller/BookingSnapshotBuilder.kt b/src/main/kotlin/com/android/trisolarisserver/controller/BookingSnapshotBuilder.kt index 6e209d3..533212f 100644 --- a/src/main/kotlin/com/android/trisolarisserver/controller/BookingSnapshotBuilder.kt +++ b/src/main/kotlin/com/android/trisolarisserver/controller/BookingSnapshotBuilder.kt @@ -18,14 +18,14 @@ class BookingSnapshotBuilder( private val guestVehicleRepo: GuestVehicleRepo ) { fun build(propertyId: UUID, bookingId: UUID): BookingDetailResponse { - val booking = bookingRepo.findById(bookingId).orElseThrow { + val booking = bookingRepo.findDetailedById(bookingId).orElseThrow { ResponseStatusException(HttpStatus.NOT_FOUND, "Booking not found") } if (booking.property.id != propertyId) { throw ResponseStatusException(HttpStatus.NOT_FOUND, "Booking not found for property") } - val stays = roomStayRepo.findByBookingId(bookingId) + val stays = roomStayRepo.findByBookingIdWithRoom(bookingId) val activeRooms = stays.filter { it.toAt == null } val roomsToShow = activeRooms.ifEmpty { stays } val roomNumbers = roomsToShow.map { it.room.roomNumber } diff --git a/src/main/kotlin/com/android/trisolarisserver/db/repo/BookingRepo.kt b/src/main/kotlin/com/android/trisolarisserver/db/repo/BookingRepo.kt index 15cfcf2..c327159 100644 --- a/src/main/kotlin/com/android/trisolarisserver/db/repo/BookingRepo.kt +++ b/src/main/kotlin/com/android/trisolarisserver/db/repo/BookingRepo.kt @@ -13,4 +13,7 @@ interface BookingRepo : JpaRepository { fun findByPropertyIdAndStatusInOrderByCreatedAtDesc(propertyId: UUID, status: Collection): List @EntityGraph(attributePaths = ["primaryGuest"]) fun findByPropertyIdOrderByCreatedAtDesc(propertyId: UUID): List + + @EntityGraph(attributePaths = ["property", "primaryGuest", "createdBy"]) + fun findDetailedById(id: UUID): java.util.Optional } diff --git a/src/main/kotlin/com/android/trisolarisserver/repo/RoomStayRepo.kt b/src/main/kotlin/com/android/trisolarisserver/repo/RoomStayRepo.kt index fe35186..1e7304d 100644 --- a/src/main/kotlin/com/android/trisolarisserver/repo/RoomStayRepo.kt +++ b/src/main/kotlin/com/android/trisolarisserver/repo/RoomStayRepo.kt @@ -43,6 +43,14 @@ interface RoomStayRepo : JpaRepository { """) fun findByBookingId(@Param("bookingId") bookingId: UUID): List + @Query(""" + select rs + from RoomStay rs + join fetch rs.room r + where rs.booking.id = :bookingId + """) + fun findByBookingIdWithRoom(@Param("bookingId") bookingId: UUID): List + @Query(""" select rs from RoomStay rs