package com.paymentlink.repository; import com.paymentlink.model.entity.ExchangeRate; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.Query; import org.springframework.data.repository.query.Param; import org.springframework.stereotype.Repository; import java.time.LocalDateTime; import java.util.List; import java.util.Optional; @Repository public interface ExchangeRateRepository extends JpaRepository { @Query("SELECT e FROM ExchangeRate e WHERE e.fromCurrency = :from " + "AND e.toCurrency = :to AND e.expiresAt > :now ORDER BY e.fetchedAt DESC") Optional findValidRate( @Param("from") String fromCurrency, @Param("to") String toCurrency, @Param("now") LocalDateTime now); Optional findByFromCurrencyAndToCurrency(String fromCurrency, String toCurrency); @Query("SELECT e FROM ExchangeRate e WHERE e.expiresAt < :now") List findExpiredRates(@Param("now") LocalDateTime now); void deleteByExpiresAtBefore(LocalDateTime expiryDate); }