/**
*
*/
package org.springframework.data.aerospike.repository;
import java.util.Collection;
import java.util.Date;
import java.util.List;
//import java.util.stream.Stream;
import java.util.Set;
import org.springframework.data.aerospike.repository.Person.Sex;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.data.domain.Slice;
import org.springframework.data.domain.Sort;
/**
*
*
* @author Peter Milne
* @author Jean Mercier
*
*/
public interface PersonRepository extends AerospikeRepository<Person, String> {
List<Person> findByLastname(String lastname);
List<Person> findByLastnameStartsWith(String prefix);
List<Person> findByLastnameEndsWith(String postfix);
List<Person> findByLastnameOrderByFirstnameAsc(String lastname);
List<Person> findByLastnameOrderByFirstnameDesc(String lastname);
List<Person> findByFirstnameLike(String firstname);
List<Person> findByFirstnameLikeOrderByLastnameAsc(String firstname, Sort sort);
List<Person> findByAgeLessThan(int age, Sort sort);
List<Person> findByFirstnameIn(String... firstnames);
List<Person> findByFirstnameNotIn(Collection<String> firstnames);
List<Person> findByFirstnameAndLastname(String firstname, String lastname);
List<Person> findByAgeBetween(int from, int to);
@SuppressWarnings("rawtypes")
Person findByShippingAddresses(Set address);
List<Person> findByAddress(Address address);
List<Person> findByAddressZipCode(String zipCode);
List<Person> findByLastnameLikeAndAgeBetween(String lastname, int from, int to);
List<Person> findByAgeOrLastnameLikeAndFirstnameLike(int age, String lastname, String firstname);
List<Person> findBySex(Sex sex);
List<Person> findBySex(Sex sex, Pageable pageable);
// List<Person> findByNamedQuery(String firstname);
List<Person> findByCreator(User user);
List<Person> findByCreatedAtLessThan(Date date);
List<Person> findByCreatedAtGreaterThan(Date date);
// List<Person> findByCreatedAtLessThanManually(Date date);
List<Person> findByCreatedAtBefore(Date date);
List<Person> findByCreatedAtAfter(Date date);
List<Person> findByLastnameNot(String lastname);
List<Person> findByCredentials(Credentials credentials);
List<Person> findCustomerByAgeBetween(Integer from, Integer to);
List<Person> findPersonByFirstname(String firstname);
long countByLastname(String lastname);
int countByFirstname(String firstname);
long someCountQuery(String lastname);
List<Person> findByFirstnameIgnoreCase(String firstName);
List<Person> findByFirstnameNotIgnoreCase(String firstName);
List<Person> findByFirstnameStartingWithIgnoreCase(String firstName);
List<Person> findByFirstnameEndingWithIgnoreCase(String firstName);
List<Person> findByFirstnameContainingIgnoreCase(String firstName);
Slice<Person> findByAgeGreaterThan(int age, Pageable pageable);
List<Person> deleteByLastname(String lastname);
Long deletePersonByLastname(String lastname);
Page<Person> findByAddressIn(List<Address> address, Pageable page);
List<Person> findTop3ByLastnameStartingWith(String lastname);
Page<Person> findTop3ByLastnameStartingWith(String lastname, Pageable pageRequest);
List<Person> findByFirstname(String string);
List<Person> findByFirstnameAndAge(String string, int i);
Iterable<Person> findByAgeBetweenAndLastname(int from, int to, String lastname);
List<Person> findByFirstnameStartsWith(String string);
Iterable<Person> findByAgeBetweenOrderByLastname(int i, int j);
}