package com.android.trisolarisserver.repo import com.android.trisolarisserver.models.booking.Payment import org.springframework.data.jpa.repository.JpaRepository import org.springframework.data.jpa.repository.Query import org.springframework.data.repository.query.Param import java.util.UUID interface PaymentRepo : JpaRepository { fun findByBookingIdOrderByReceivedAtDesc(bookingId: UUID): List fun findByReference(reference: String): Payment? @Query( """ select coalesce(sum(p.amount), 0) from Payment p where p.booking.id = :bookingId """ ) fun sumAmountByBookingId(@Param("bookingId") bookingId: UUID): Long @Query( """ select p.booking.id as bookingId, coalesce(sum(p.amount), 0) as total from Payment p where p.booking.id in :bookingIds group by p.booking.id """ ) fun sumAmountByBookingIds(@Param("bookingIds") bookingIds: List): List } interface BookingPaymentSumRow { val bookingId: UUID val total: Long }