package pl.edu.icm.saos.persistence.search;
import pl.edu.icm.saos.persistence.search.dto.SearchFilter;
import pl.edu.icm.saos.persistence.search.result.SearchResult;
/**
* A data base search service interface
*
* @author lukdumi
*
*/
public interface DatabaseSearchService {
/**
* Performs search according to the given criteria
* @param <E> A search result record type
* @param <T> A search filter type
*/
public <E, T extends SearchFilter> SearchResult<E> search(T searchFilter);
/**
* Returns the number of all records that met the criteria specified in searchFilter
*/
public <T extends SearchFilter> long count(T searchFilter);
}