using System;
using System.Linq;
using Microsoft.Extensions.DependencyInjection;
using Svrnty.CQRS.Events.Abstractions.Subscriptions;
namespace Svrnty.CQRS.Events.PostgreSQL.Subscriptions;
///
/// Service collection extensions for PostgreSQL subscription storage.
///
public static class ServiceCollectionExtensions
{
///
/// Add PostgreSQL subscription store to the service collection.
/// Replaces any existing ISubscriptionStore registration.
///
public static IServiceCollection AddPostgresSubscriptionStore(this IServiceCollection services)
{
// Remove existing IPersistentSubscriptionStore registration (e.g., in-memory)
var descriptor = services.FirstOrDefault(d => d.ServiceType == typeof(IPersistentSubscriptionStore));
if (descriptor != null)
{
services.Remove(descriptor);
}
// Register PostgreSQL implementation
services.AddSingleton();
return services;
}
}