using System; using System.Collections.Generic; using System.Threading; using System.Threading.Tasks; namespace Svrnty.CQRS.Events.Abstractions.Subscriptions; /// /// Storage abstraction for persisting and retrieving persistent subscriptions. /// public interface IPersistentSubscriptionStore { /// /// Create a new persistent subscription. /// /// The subscription to create. /// Cancellation token. /// The created subscription. Task CreateAsync( PersistentSubscription subscription, CancellationToken cancellationToken = default); /// /// Get a subscription by its ID. /// /// The subscription ID. /// Cancellation token. /// The subscription, or null if not found. Task GetByIdAsync( string id, CancellationToken cancellationToken = default); /// /// Get all subscriptions for a specific subscriber. /// /// The subscriber ID. /// Cancellation token. /// List of subscriptions. Task> GetBySubscriberIdAsync( string subscriberId, CancellationToken cancellationToken = default); /// /// Get all subscriptions for a specific correlation ID. /// /// The correlation ID. /// Cancellation token. /// List of subscriptions. Task> GetByCorrelationIdAsync( string correlationId, CancellationToken cancellationToken = default); /// /// Get all subscriptions with a specific status. /// /// The subscription status. /// Cancellation token. /// List of subscriptions. Task> GetByStatusAsync( SubscriptionStatus status, CancellationToken cancellationToken = default); /// /// Get all subscriptions for a specific connection ID. /// /// The connection ID. /// Cancellation token. /// List of subscriptions. Task> GetByConnectionIdAsync( string connectionId, CancellationToken cancellationToken = default); /// /// Update an existing subscription. /// /// The subscription to update. /// Cancellation token. Task UpdateAsync( PersistentSubscription subscription, CancellationToken cancellationToken = default); /// /// Delete a subscription. /// /// The subscription ID to delete. /// Cancellation token. Task DeleteAsync( string id, CancellationToken cancellationToken = default); /// /// Get all expired subscriptions. /// /// Cancellation token. /// List of expired subscriptions. Task> GetExpiredSubscriptionsAsync( CancellationToken cancellationToken = default); }