package gov.nysenate.openleg.dao.calendar.search;
import gov.nysenate.openleg.dao.base.LimitOffset;
import gov.nysenate.openleg.model.calendar.Calendar;
import gov.nysenate.openleg.model.calendar.CalendarId;
import gov.nysenate.openleg.model.search.SearchResults;
import org.elasticsearch.index.query.QueryBuilder;
import org.elasticsearch.search.sort.SortBuilder;
import java.util.Collection;
import java.util.List;
public interface CalendarSearchDao {
/**
* Performs a calendar search based on the given query string.
* Results are sorted and curtailed according to the given sort string and limit offset.
* @param query
* @param postFilter
* @param sort
* @param limitOffset @return
* */
public SearchResults<CalendarId> searchCalendars(QueryBuilder query, QueryBuilder postFilter,
List<SortBuilder> sort, LimitOffset limitOffset);
/**
* Updates or inserts a single calendar into the index
*
* @param calendar
*/
public void updateCalendarIndex(Calendar calendar);
/**
* Performs a bulk update/insert into the index for a collection of calendars
*
* @param calendars
*/
public void updateCalendarIndexBulk(Collection<Calendar> calendars);
/**
* Deletes a calendar in the index corresponding to the given calendar id
*
* @param calId
*/
public void deleteCalendarFromIndex(CalendarId calId);
}