package com.imprimelibros.erp.cart; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.Modifying; import org.springframework.data.jpa.repository.Query; import org.springframework.data.repository.query.Param; import org.springframework.transaction.annotation.Transactional; import java.time.LocalDateTime; import java.util.Optional; public interface CartRepository extends JpaRepository { Optional findByUserIdAndStatus(Long userId, Cart.Status status); @Query(""" select distinct c from Cart c left join fetch c.direcciones cd left join fetch cd.direccion d left join fetch d.pais p left join fetch cd.presupuesto pr where c.id = :id """) Optional findByIdFetchAll(@Param("id") Long id); @Modifying @Transactional @Query(""" UPDATE Cart c SET c.status = 'ABANDONED' WHERE c.status = 'ACTIVE' AND c.updatedAt < :limite """) int markOldCartsAsAbandoned(LocalDateTime limite); }