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