package gov.nysenate.openleg.service.entity.member.search; import gov.nysenate.openleg.dao.base.LimitOffset; import gov.nysenate.openleg.model.base.SessionYear; import gov.nysenate.openleg.model.entity.Chamber; import gov.nysenate.openleg.model.entity.SessionMember; import gov.nysenate.openleg.model.search.SearchException; import gov.nysenate.openleg.model.search.SearchResults; import gov.nysenate.openleg.service.entity.member.event.BulkMemberUpdateEvent; import gov.nysenate.openleg.service.entity.member.event.MemberUpdateEvent; public interface MemberSearchService { /** * Provides a listing of members in a session year. * @see #searchMembers(String, SessionYear, String, gov.nysenate.openleg.dao.base.LimitOffset) */ public SearchResults<SessionMember> searchMembers(SessionYear sessionYear, String sort, LimitOffset limOff) throws SearchException; /** * Provides a listing of members of a chamber in a session year. * @see #searchMembers(String, SessionYear, String, gov.nysenate.openleg.dao.base.LimitOffset) */ public SearchResults<SessionMember> searchMembers(SessionYear sessionYear, Chamber chamber, String sort, LimitOffset limOff) throws SearchException; /** * Performs a search across all members. * @see #searchMembers(String, SessionYear, String, gov.nysenate.openleg.dao.base.LimitOffset) */ public SearchResults<SessionMember> searchMembers(String query, String sort, LimitOffset limOff) throws SearchException; /** * Performs a search across all members in a given session year. * * @param query Search query. * @param sessionYear Filter by session year. * @param sort Sort by field(s) * @param limOff Restrict the result set. * @return * @throws SearchException */ public SearchResults<SessionMember> searchMembers(String query, SessionYear sessionYear, String sort, LimitOffset limOff) throws SearchException; /** * Handles a member update event by indexing the supplied member. * @param memberUpdateEvent */ public void handleMemberUpdate(MemberUpdateEvent memberUpdateEvent); /** * Handles a batch member update event by indexing the supplied members. * @param bulkMemberUpdateEvent */ public void handleBulkMemberUpdate(BulkMemberUpdateEvent bulkMemberUpdateEvent); }