findProductByDepartment

Repository

Usamos o AllowFiltering no Repository, igual vimos no comando do cqlsh. Utilizaremos também, os query methods. Spring Data Cassandra Query Methodsarrow-up-right.

public interface ProductRepository extends CassandraRepository<Product, UUID> {
    @AllowFiltering
    List<Product> findByDepartment(String department);
}

Service

Caso o text que passamos no Controller seja vazio ou seja: "", retornamos um findAll. Se não, mandamos a busca customizada do repository.

public List<ProductDTO> findByDepartment(String text) {
    List<Product> list;

    if ("".equals(text)) {
        list = repository.findAll();
    } else {
        list = repository.findByDepartment(text);
    }
    return list.stream().map(ProductDTO::new).toList();
}

Controller

Caso a description/text seja diferente de nula (preenchida), realizamos o findByDepartment do Service.

Caso seja de fato nula, utilzaremos o findAll do Service.

Atualizado