package com.pressing.domain.wallet;

import java.util.Optional;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.data.jpa.domain.Specification;
import org.springframework.data.jpa.repository.EntityGraph;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;

public interface WalletEntryRepository extends JpaRepository<WalletEntry, Long>, JpaSpecificationExecutor<WalletEntry> {
    Optional<WalletEntry> findByIdAndSiteId(Long id, Long siteId);

    // Charge customer en une seule requête (évite le N+1 sur la liste du portefeuille)
    @Override
    @EntityGraph(attributePaths = {"customer"})
    Page<WalletEntry> findAll(Specification<WalletEntry> spec, Pageable pageable);
}
