package com.codebyte.api.item.repository;

import com.codebyte.api.item.domain.Item;
import java.util.Optional;
import java.util.UUID;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.data.jpa.repository.JpaRepository;

/** Repository for {@link Item}. */
public interface ItemRepository extends JpaRepository<Item, UUID> {

    /** Case-insensitive lookup by name, backing the unique-name business rule. */
    Optional<Item> findByNameIgnoreCase(String name);

    boolean existsByNameIgnoreCase(String name);

    /** Case-insensitive substring search across name and description, for the {@code q} filter. */
    Page<Item> findByNameContainingIgnoreCaseOrDescriptionContainingIgnoreCase(
            String name, String description, Pageable pageable);
}
