package gov.nysenate.openleg.dao.law.data; import com.google.common.collect.Range; import gov.nysenate.openleg.dao.base.LimitOffset; import gov.nysenate.openleg.dao.base.PaginatedList; import gov.nysenate.openleg.dao.base.SortOrder; import gov.nysenate.openleg.model.law.LawDocId; import gov.nysenate.openleg.model.law.LawVersionId; import gov.nysenate.openleg.model.updates.UpdateDigest; import gov.nysenate.openleg.model.updates.UpdateToken; import gov.nysenate.openleg.model.updates.UpdateType; import java.time.LocalDateTime; public interface LawUpdatesDao { /** * Returns a list of law id tokens that have been updated during the given date range. * * @param dateTimeRange Range<LocalDateTime> - The date range to search for updates within. * @param type UpdateType - The type of updates (based on law file published date or when data was processed) * @param dateOrder SortOrder - Order by the update date/time. * @param limitOffset LimitOffset - Restrict the result set * @return PaginatedList<UpdateToken<LawVersionId>> */ public PaginatedList<UpdateToken<LawVersionId>> getUpdates( Range<LocalDateTime> dateTimeRange, UpdateType type, SortOrder dateOrder, LimitOffset limitOffset); /** * Returns a list of law doc id digests that have been updated during the given date range. * @see #getUpdates for param details. * @return PaginatedList<UpdateDigest<LawDocId>> */ public PaginatedList<UpdateDigest<LawDocId>> getDetailedUpdates( Range<LocalDateTime> dateTimeRange, UpdateType type, SortOrder dateOrder, LimitOffset limitOffset); /** * Returns a list of update digests for law documents that have been updated for a given law. * * @param lawId String - Three letter law id to get updates for * @see #getUpdates for the other params. * @return PaginatedList<UpdateDigest<LawDocId>> */ public PaginatedList<UpdateDigest<LawDocId>> getDetailedUpdatesForLaw( String lawId, Range<LocalDateTime> dateTimeRange, UpdateType type, SortOrder dateOrder, LimitOffset limitOffset); /** * Returns a list of law doc id digests for a given law document. This is basically a history of updates for * a particular section of law. * * @param documentId String - The document id to get updates for * @see #getUpdates for other param details * @return PaginatedList<UpdateDigest<LawDocId>> */ public PaginatedList<UpdateDigest<LawDocId>> getDetailedUpdatesForDocument( String documentId, Range<LocalDateTime> dateTimeRange, UpdateType type, SortOrder dateOrder, LimitOffset limitOffset); }