From 19c249e9120d4af356801fa8ce6137ef5ece2218 Mon Sep 17 00:00:00 2001 From: Stuart Ferguson Date: Mon, 13 Oct 2025 20:59:44 +0100 Subject: [PATCH] the correct change :| --- .../IApplicationBuilderExtenstions.cs | 115 +++++++++++------- 1 file changed, 73 insertions(+), 42 deletions(-) diff --git a/Shared.EventStore/Extensions/IApplicationBuilderExtenstions.cs b/Shared.EventStore/Extensions/IApplicationBuilderExtenstions.cs index 5eda3b64..b142180e 100644 --- a/Shared.EventStore/Extensions/IApplicationBuilderExtenstions.cs +++ b/Shared.EventStore/Extensions/IApplicationBuilderExtenstions.cs @@ -1,5 +1,12 @@ namespace Shared.EventStore.Extensions; +using EventHandling; +using global::EventStore.Client; +using Microsoft.AspNetCore.Builder; +using Microsoft.Extensions.Configuration; +using Shared.EventStore.EventStore; +using Shared.TraceHandler; +using SubscriptionWorker; using System; using System.Collections.Generic; using System.Diagnostics; @@ -7,10 +14,6 @@ using System.Linq; using System.Threading; using System.Threading.Tasks; -using EventHandling; -using global::EventStore.Client; -using Microsoft.AspNetCore.Builder; -using SubscriptionWorker; public static class IApplicationBuilderExtensions { @@ -51,52 +54,80 @@ public static async Task ConfigureSubscriptionService(this IApplicationBuilder a } } + internal static List GetDomainWorker(Dictionary eventHandlerResolvers, + ISubscriptionRepository subscriptionRepository, + SubscriptionWorkersRoot configuration, + String eventStoreConnectionString, + SubscriptionWorkerConfig configurationSubscriptionWorker, + Action traceHandler) { + KeyValuePair ehr = eventHandlerResolvers.SingleOrDefault(e => e.Key == "Domain"); + List workers = new(); + if (ehr.Value == null) + return workers; + for (Int32 i = 0; i < configurationSubscriptionWorker.InstanceCount; i++) { + SubscriptionWorker worker = ConfigureSubscriptionWorker(subscriptionRepository, configuration, eventStoreConnectionString, traceHandler, ehr, configurationSubscriptionWorker, "DOMAIN"); + + workers.Add(worker); + } + + return workers; + } + + internal static List GetOrderedWorkers(Dictionary eventHandlerResolvers, + ISubscriptionRepository subscriptionRepository, + SubscriptionWorkersRoot configuration, + String eventStoreConnectionString, + SubscriptionWorkerConfig configurationSubscriptionWorker, + Action traceHandler) { + KeyValuePair ehr = eventHandlerResolvers.SingleOrDefault(e => e.Key == "Ordered"); + List workers = new(); + if (ehr.Value == null) + return workers; + SubscriptionWorker worker = ConfigureSubscriptionWorker(subscriptionRepository, configuration, + eventStoreConnectionString, traceHandler, ehr, configurationSubscriptionWorker, "ORDERED"); + workers.Add(worker); + return workers; + } + + internal static List GetMainWorkers(Dictionary eventHandlerResolvers, + ISubscriptionRepository subscriptionRepository, + SubscriptionWorkersRoot configuration, + String eventStoreConnectionString, + SubscriptionWorkerConfig configurationSubscriptionWorker, + Action traceHandler) { + List workers = new(); + KeyValuePair ehr = eventHandlerResolvers.SingleOrDefault(e => e.Key == "Main"); + if (ehr.Value == null) + return workers; + for (Int32 i = 0; i < configurationSubscriptionWorker.InstanceCount; i++) + { + SubscriptionWorker worker = ConfigureSubscriptionWorker(subscriptionRepository, configuration, + eventStoreConnectionString, traceHandler, ehr, configurationSubscriptionWorker, "MAIN"); + + workers.Add(worker); + } + + return workers; + } + internal static List ConfigureSubscriptions(ISubscriptionRepository subscriptionRepository, - SubscriptionWorkersRoot configuration, - String eventStoreConnectionString, - Dictionary eventHandlerResolvers, - Action traceHandler) { + SubscriptionWorkersRoot configuration, + String eventStoreConnectionString, + Dictionary eventHandlerResolvers, + Action traceHandler) { List workers = new(); foreach (SubscriptionWorkerConfig configurationSubscriptionWorker in configuration.SubscriptionWorkers) { if (!configurationSubscriptionWorker.Enabled) continue; - if (configurationSubscriptionWorker.IsOrdered) { - KeyValuePair ehr = eventHandlerResolvers.SingleOrDefault(e => e.Key == "Ordered"); + List workersList = configurationSubscriptionWorker switch { + _ when configurationSubscriptionWorker.IsDomainOnly => GetDomainWorker(eventHandlerResolvers, subscriptionRepository, configuration, eventStoreConnectionString, configurationSubscriptionWorker, traceHandler), + _ when configurationSubscriptionWorker.IsOrdered => GetOrderedWorkers(eventHandlerResolvers, subscriptionRepository, configuration, eventStoreConnectionString, configurationSubscriptionWorker, traceHandler), + _ => GetMainWorkers(eventHandlerResolvers, subscriptionRepository, configuration, eventStoreConnectionString, configurationSubscriptionWorker, traceHandler), + }; - if (ehr.Value != null) { - SubscriptionWorker worker = ConfigureSubscriptionWorker(subscriptionRepository, configuration, - eventStoreConnectionString, traceHandler, ehr, configurationSubscriptionWorker, "ORDERED"); - workers.Add(worker); - } - } - else if (configurationSubscriptionWorker.IsDomainOnly) { - KeyValuePair ehr = eventHandlerResolvers.SingleOrDefault(e => e.Key == "Domain"); - - if (ehr.Value != null) - { - for (Int32 i = 0; i < configurationSubscriptionWorker.InstanceCount; i++) { - SubscriptionWorker worker = ConfigureSubscriptionWorker(subscriptionRepository, configuration, - eventStoreConnectionString, traceHandler, ehr, configurationSubscriptionWorker, "DOMAIN"); - - workers.Add(worker); - } - } - } - else { - KeyValuePair ehr = eventHandlerResolvers.SingleOrDefault(e => e.Key == "Main"); - if (ehr.Value != null) - { - for (Int32 i = 0; i < configurationSubscriptionWorker.InstanceCount; i++) - { - SubscriptionWorker worker = ConfigureSubscriptionWorker(subscriptionRepository, configuration, - eventStoreConnectionString, traceHandler, ehr, configurationSubscriptionWorker, "MAIN"); - - workers.Add(worker); - } - } - } + workers.AddRange(workersList); } return workers;