package org.apereo.cas.support.events; import org.apereo.cas.support.events.dao.CasEvent; import java.time.ZonedDateTime; import java.util.Collection; /** * Defines DAO operations over an events repository. * * @author Misagh Moayyed * @since 5.0.0 */ public interface CasEventRepository { /** * Save. * * @param event the event */ void save(CasEvent event); /** * Load collection. * * @return the collection */ Collection<CasEvent> load(); /** * Load collection of events created after the given date. * * @param dateTime the date time * @return the collection */ Collection<CasEvent> load(ZonedDateTime dateTime); /** * Gets events of type for principal. * * @param type the type * @param principal the principal * @return the events of type */ Collection<CasEvent> getEventsOfTypeForPrincipal(String type, String principal); /** * Gets events of type for principal after date. * * @param type the type * @param principal the principal * @param dateTime the date time * @return the events of type */ Collection<CasEvent> getEventsOfTypeForPrincipal(String type, String principal, ZonedDateTime dateTime); /** * Gets events of type. * * @param type the type * @return the events of type */ Collection<CasEvent> getEventsOfType(String type); /** * Gets events of type after date. * * @param type the type * @param dateTime the date time * @return the events of type */ Collection<CasEvent> getEventsOfType(String type, ZonedDateTime dateTime); /** * Gets events for principal. * * @param id the id * @return the events for principal */ Collection<CasEvent> getEventsForPrincipal(String id); /** * Gets events for principal after date. * * @param id the id * @param dateTime the date time * @return the events for principal */ Collection<CasEvent> getEventsForPrincipal(String id, ZonedDateTime dateTime); }