using DigitalData.MessagingService.RabbitMQ; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; namespace DigitalData.MessagingService.Infrastructure; public class MessagingServiceInfrastructureConfiguration { internal IServiceCollection Services { get; } private bool _rabbitMqConnectionFactoryAdded = false; internal MessagingServiceInfrastructureConfiguration(IServiceCollection services) { Services = services; } public void EnsureRabbitMqConnectionFactoryAdded() { if (!_rabbitMqConnectionFactoryAdded) { throw new InvalidOperationException("RabbitMQ connection factory has not been added. Please call AddRabbitMqConnectionFactory() before using this configuration."); } } public MessagingServiceInfrastructureConfiguration AddRabbitMqConnectionFactory(Action configure) { Services.AddRabbitMqConnectionFactory(configure); _rabbitMqConnectionFactoryAdded = true; return this; } public MessagingServiceInfrastructureConfiguration AddRabbitMqConnectionFactory(IConfiguration configuration, string sectionName = RabbitMqConfiguration.SectionName) { Services.AddRabbitMqConnectionFactory(configuration, sectionName); _rabbitMqConnectionFactoryAdded = true; return this; } }