package gov.nysenate.openleg.service.law.search; import com.google.common.collect.Range; import gov.nysenate.openleg.dao.base.LimitOffset; import gov.nysenate.openleg.model.law.LawDocId; import gov.nysenate.openleg.model.search.SearchException; import gov.nysenate.openleg.model.search.SearchResults; import gov.nysenate.openleg.service.law.event.BulkLawUpdateEvent; import gov.nysenate.openleg.service.law.event.LawUpdateEvent; import java.time.LocalDateTime; public interface LawSearchService { /** * Search across all law documents. * @see #searchLawDocs(String, String, String, LimitOffset) */ public SearchResults<LawDocId> searchLawDocs(String query, String sort, LimitOffset limOff) throws SearchException; /** * Search across all documents within a specific law volume. * * @param query String - Lucene query string * @param lawId String - The law id to search within. (set to null to search all laws). * @param sort String - Optional sort * @param limOff LimitOffset - Pagination * @return SearchResults<LawDocId> * @throws SearchException */ public SearchResults<LawDocId> searchLawDocs(String query, String lawId, String sort, LimitOffset limOff) throws SearchException; /** * Handle a law update by indexing the supplied law. * * @param lawUpdateEvent LawUpdateEvent */ public void handleLawUpdate(LawUpdateEvent lawUpdateEvent); /** * Handle a batch law update by indexing all the supplied laws. * * @param bulkLawUpdateEvent BulkLawUpdateEvent */ public void handleBulkLawUpdate(BulkLawUpdateEvent bulkLawUpdateEvent); }