package gov.nysenate.openleg.dao.notification;
import gov.nysenate.openleg.model.notification.NotificationDigestSubscription;
import gov.nysenate.openleg.model.notification.NotificationSubscription;
import java.time.LocalDateTime;
import java.util.List;
import java.util.Set;
public interface NotificationSubscriptionDao {
/**
* Retrieve all notification subscriptions
* @return List<NotificationSubscription>
*/
public Set<NotificationSubscription> getSubscriptions();
/**
* Insert a new subscription
* @param subscription NotificationSubscription
*/
public void insertSubscription(NotificationSubscription subscription);
/**
* Remove a subscription
* @param subscription NotificationSubscription
*/
public void removeSubscription(NotificationSubscription subscription);
/**
* Gets all notification digest subscriptions whose next digest is before the current time
* @return Set<NotificationDigestSubscription>
*/
public Set<NotificationDigestSubscription> getPendingDigests();
/**
* Gets all notification digest subscriptions for the given user
* @param username String
* @return Set<NotificationDigestSubscription>
*/
public Set<NotificationDigestSubscription> getDigestSubsForUser(String username);
/**
* Inserts a new Notification Digest Subscription
* @param subscription NotificationDigestSubscription
*/
public void insertDigestSubscription(NotificationDigestSubscription subscription);
/**
* Updates the next digest field of the subscription
* @param digestSubscriptionId int
* @param nextDigest LocalDateTime
*/
public void updateNextDigest(int digestSubscriptionId, LocalDateTime nextDigest);
/**
* Removes the digest subscription with the given id
* @param digestSubscriptionId int
*/
public void removeDigestSubscription(int digestSubscriptionId);
}