From 0877cb9e9a496fee30f7eaa293fda3f49b41deda Mon Sep 17 00:00:00 2001 From: Francis Pion Date: Sat, 29 Nov 2025 15:29:13 -0500 Subject: [PATCH 1/8] EventBus --- lib/Logitar.EventSourcing.Infrastructure/EventBus.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/Logitar.EventSourcing.Infrastructure/EventBus.cs b/lib/Logitar.EventSourcing.Infrastructure/EventBus.cs index f54fa6c..7baa87a 100644 --- a/lib/Logitar.EventSourcing.Infrastructure/EventBus.cs +++ b/lib/Logitar.EventSourcing.Infrastructure/EventBus.cs @@ -11,7 +11,7 @@ public class EventBus : IEventBus /// /// Gets the service provider. /// - protected IServiceProvider ServiceProvider { get; } + protected virtual IServiceProvider ServiceProvider { get; } /// /// Initializes a new instance of the class. From 7d3168265cfcdfc84049ca6565e9b66dc2f21100 Mon Sep 17 00:00:00 2001 From: Francis Pion Date: Sat, 29 Nov 2025 15:30:26 -0500 Subject: [PATCH 2/8] system_usings --- lib/Logitar.EventSourcing.Infrastructure/EventBus.cs | 1 - .../Logitar.EventSourcing.Infrastructure.csproj | 1 + 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/Logitar.EventSourcing.Infrastructure/EventBus.cs b/lib/Logitar.EventSourcing.Infrastructure/EventBus.cs index 7baa87a..9cae1e1 100644 --- a/lib/Logitar.EventSourcing.Infrastructure/EventBus.cs +++ b/lib/Logitar.EventSourcing.Infrastructure/EventBus.cs @@ -1,5 +1,4 @@ using Microsoft.Extensions.DependencyInjection; -using System.Reflection; namespace Logitar.EventSourcing.Infrastructure; diff --git a/lib/Logitar.EventSourcing.Infrastructure/Logitar.EventSourcing.Infrastructure.csproj b/lib/Logitar.EventSourcing.Infrastructure/Logitar.EventSourcing.Infrastructure.csproj index e7fae6e..081e97a 100644 --- a/lib/Logitar.EventSourcing.Infrastructure/Logitar.EventSourcing.Infrastructure.csproj +++ b/lib/Logitar.EventSourcing.Infrastructure/Logitar.EventSourcing.Infrastructure.csproj @@ -39,6 +39,7 @@ + From f6197ce10d601c723eb93314cd4947647fcafcf2 Mon Sep 17 00:00:00 2001 From: Francis Pion Date: Sat, 29 Nov 2025 15:33:43 -0500 Subject: [PATCH 3/8] license --- LICENSE | 2 +- .../LICENSE | 2 +- .../Logitar.EventSourcing.EntityFrameworkCore.PostgreSQL.csproj | 2 +- .../LICENSE | 2 +- .../Logitar.EventSourcing.EntityFrameworkCore.Relational.csproj | 2 +- lib/Logitar.EventSourcing.EntityFrameworkCore.SqlServer/LICENSE | 2 +- .../Logitar.EventSourcing.EntityFrameworkCore.SqlServer.csproj | 2 +- lib/Logitar.EventSourcing.Infrastructure/LICENSE | 2 +- .../Logitar.EventSourcing.Infrastructure.csproj | 2 +- lib/Logitar.EventSourcing.Kurrent/LICENSE | 2 +- .../Logitar.EventSourcing.Kurrent.csproj | 2 +- lib/Logitar.EventSourcing/LICENSE | 2 +- lib/Logitar.EventSourcing/Logitar.EventSourcing.csproj | 2 +- 13 files changed, 13 insertions(+), 13 deletions(-) diff --git a/LICENSE b/LICENSE index 0487f9b..70fdfae 100644 --- a/LICENSE +++ b/LICENSE @@ -1,6 +1,6 @@ MIT License -Copyright (c) 2024 Logitar +Copyright (c) 2025 Logitar Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/lib/Logitar.EventSourcing.EntityFrameworkCore.PostgreSQL/LICENSE b/lib/Logitar.EventSourcing.EntityFrameworkCore.PostgreSQL/LICENSE index 0487f9b..70fdfae 100644 --- a/lib/Logitar.EventSourcing.EntityFrameworkCore.PostgreSQL/LICENSE +++ b/lib/Logitar.EventSourcing.EntityFrameworkCore.PostgreSQL/LICENSE @@ -1,6 +1,6 @@ MIT License -Copyright (c) 2024 Logitar +Copyright (c) 2025 Logitar Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/lib/Logitar.EventSourcing.EntityFrameworkCore.PostgreSQL/Logitar.EventSourcing.EntityFrameworkCore.PostgreSQL.csproj b/lib/Logitar.EventSourcing.EntityFrameworkCore.PostgreSQL/Logitar.EventSourcing.EntityFrameworkCore.PostgreSQL.csproj index e4fbbc4..963e7ae 100644 --- a/lib/Logitar.EventSourcing.EntityFrameworkCore.PostgreSQL/Logitar.EventSourcing.EntityFrameworkCore.PostgreSQL.csproj +++ b/lib/Logitar.EventSourcing.EntityFrameworkCore.PostgreSQL/Logitar.EventSourcing.EntityFrameworkCore.PostgreSQL.csproj @@ -9,7 +9,7 @@ Francis Pion Logitar.NET Provides an implementation of a relational event store to be used with the Event Sourcing architecture pattern, Entity Framework Core and PostgreSQL. - © 2024 Logitar All Rights Reserved. + © 2025 Logitar All Rights Reserved. logitar.png README.md git diff --git a/lib/Logitar.EventSourcing.EntityFrameworkCore.Relational/LICENSE b/lib/Logitar.EventSourcing.EntityFrameworkCore.Relational/LICENSE index 0487f9b..70fdfae 100644 --- a/lib/Logitar.EventSourcing.EntityFrameworkCore.Relational/LICENSE +++ b/lib/Logitar.EventSourcing.EntityFrameworkCore.Relational/LICENSE @@ -1,6 +1,6 @@ MIT License -Copyright (c) 2024 Logitar +Copyright (c) 2025 Logitar Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/lib/Logitar.EventSourcing.EntityFrameworkCore.Relational/Logitar.EventSourcing.EntityFrameworkCore.Relational.csproj b/lib/Logitar.EventSourcing.EntityFrameworkCore.Relational/Logitar.EventSourcing.EntityFrameworkCore.Relational.csproj index 8678140..fd23eee 100644 --- a/lib/Logitar.EventSourcing.EntityFrameworkCore.Relational/Logitar.EventSourcing.EntityFrameworkCore.Relational.csproj +++ b/lib/Logitar.EventSourcing.EntityFrameworkCore.Relational/Logitar.EventSourcing.EntityFrameworkCore.Relational.csproj @@ -9,7 +9,7 @@ Francis Pion Logitar.NET Provides an abstraction of a relational event store to be used with the Event Sourcing architecture pattern and Entity Framework Core. - © 2024 Logitar All Rights Reserved. + © 2025 Logitar All Rights Reserved. logitar.png README.md git diff --git a/lib/Logitar.EventSourcing.EntityFrameworkCore.SqlServer/LICENSE b/lib/Logitar.EventSourcing.EntityFrameworkCore.SqlServer/LICENSE index 0487f9b..70fdfae 100644 --- a/lib/Logitar.EventSourcing.EntityFrameworkCore.SqlServer/LICENSE +++ b/lib/Logitar.EventSourcing.EntityFrameworkCore.SqlServer/LICENSE @@ -1,6 +1,6 @@ MIT License -Copyright (c) 2024 Logitar +Copyright (c) 2025 Logitar Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/lib/Logitar.EventSourcing.EntityFrameworkCore.SqlServer/Logitar.EventSourcing.EntityFrameworkCore.SqlServer.csproj b/lib/Logitar.EventSourcing.EntityFrameworkCore.SqlServer/Logitar.EventSourcing.EntityFrameworkCore.SqlServer.csproj index a096f0a..54ebc7c 100644 --- a/lib/Logitar.EventSourcing.EntityFrameworkCore.SqlServer/Logitar.EventSourcing.EntityFrameworkCore.SqlServer.csproj +++ b/lib/Logitar.EventSourcing.EntityFrameworkCore.SqlServer/Logitar.EventSourcing.EntityFrameworkCore.SqlServer.csproj @@ -9,7 +9,7 @@ Francis Pion Logitar.NET Provides an implementation of a relational event store to be used with the Event Sourcing architecture pattern, Entity Framework Core and Microsoft SQL Server. - © 2024 Logitar All Rights Reserved. + © 2025 Logitar All Rights Reserved. logitar.png README.md git diff --git a/lib/Logitar.EventSourcing.Infrastructure/LICENSE b/lib/Logitar.EventSourcing.Infrastructure/LICENSE index 0487f9b..70fdfae 100644 --- a/lib/Logitar.EventSourcing.Infrastructure/LICENSE +++ b/lib/Logitar.EventSourcing.Infrastructure/LICENSE @@ -1,6 +1,6 @@ MIT License -Copyright (c) 2024 Logitar +Copyright (c) 2025 Logitar Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/lib/Logitar.EventSourcing.Infrastructure/Logitar.EventSourcing.Infrastructure.csproj b/lib/Logitar.EventSourcing.Infrastructure/Logitar.EventSourcing.Infrastructure.csproj index 081e97a..1b0df9f 100644 --- a/lib/Logitar.EventSourcing.Infrastructure/Logitar.EventSourcing.Infrastructure.csproj +++ b/lib/Logitar.EventSourcing.Infrastructure/Logitar.EventSourcing.Infrastructure.csproj @@ -9,7 +9,7 @@ Francis Pion Logitar.NET Provides an abstraction of an event store to be used with the Event Sourcing architecture pattern. - © 2024 Logitar All Rights Reserved. + © 2025 Logitar All Rights Reserved. logitar.png README.md git diff --git a/lib/Logitar.EventSourcing.Kurrent/LICENSE b/lib/Logitar.EventSourcing.Kurrent/LICENSE index 0487f9b..70fdfae 100644 --- a/lib/Logitar.EventSourcing.Kurrent/LICENSE +++ b/lib/Logitar.EventSourcing.Kurrent/LICENSE @@ -1,6 +1,6 @@ MIT License -Copyright (c) 2024 Logitar +Copyright (c) 2025 Logitar Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/lib/Logitar.EventSourcing.Kurrent/Logitar.EventSourcing.Kurrent.csproj b/lib/Logitar.EventSourcing.Kurrent/Logitar.EventSourcing.Kurrent.csproj index 40339e9..b1c05f7 100644 --- a/lib/Logitar.EventSourcing.Kurrent/Logitar.EventSourcing.Kurrent.csproj +++ b/lib/Logitar.EventSourcing.Kurrent/Logitar.EventSourcing.Kurrent.csproj @@ -9,7 +9,7 @@ Francis Pion Logitar.NET Provides an implementation of an event store to be used with the Event Sourcing architecture pattern, and EventStoreDB/Kurrent. - © 2024 Logitar All Rights Reserved. + © 2025 Logitar All Rights Reserved. logitar.png README.md git diff --git a/lib/Logitar.EventSourcing/LICENSE b/lib/Logitar.EventSourcing/LICENSE index 0487f9b..70fdfae 100644 --- a/lib/Logitar.EventSourcing/LICENSE +++ b/lib/Logitar.EventSourcing/LICENSE @@ -1,6 +1,6 @@ MIT License -Copyright (c) 2024 Logitar +Copyright (c) 2025 Logitar Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/lib/Logitar.EventSourcing/Logitar.EventSourcing.csproj b/lib/Logitar.EventSourcing/Logitar.EventSourcing.csproj index 843512d..b52486e 100644 --- a/lib/Logitar.EventSourcing/Logitar.EventSourcing.csproj +++ b/lib/Logitar.EventSourcing/Logitar.EventSourcing.csproj @@ -9,7 +9,7 @@ Francis Pion Logitar.NET Provides an implementation of the Event Sourcing architecture pattern. - © 2024 Logitar All Rights Reserved. + © 2025 Logitar All Rights Reserved. logitar.png README.md git From ffa5a227ac71d7c9093c0ac9516f8b6de276b43d Mon Sep 17 00:00:00 2001 From: Francis Pion Date: Sat, 29 Nov 2025 15:37:57 -0500 Subject: [PATCH 4/8] EventBus --- .../EventBus.cs | 28 +++++++++++++------ 1 file changed, 19 insertions(+), 9 deletions(-) diff --git a/lib/Logitar.EventSourcing.Infrastructure/EventBus.cs b/lib/Logitar.EventSourcing.Infrastructure/EventBus.cs index 9cae1e1..d3528ca 100644 --- a/lib/Logitar.EventSourcing.Infrastructure/EventBus.cs +++ b/lib/Logitar.EventSourcing.Infrastructure/EventBus.cs @@ -29,22 +29,32 @@ public EventBus(IServiceProvider serviceProvider) /// The asynchronous operation. public async Task PublishAsync(IEvent @event, CancellationToken cancellationToken) { - IEnumerable handlers = ServiceProvider.GetServices(typeof(IEventHandler<>).MakeGenericType(@event.GetType())); - if (handlers.Any()) + IReadOnlyCollection handlers = await GetHandlersAsync(@event, cancellationToken); + if (handlers.Count > 0) { Type[] parameterTypes = [@event.GetType(), typeof(CancellationToken)]; object[] parameters = [@event, cancellationToken]; - foreach (object? handler in handlers) + foreach (object handler in handlers) { - if (handler is not null) + MethodInfo? handle = handler.GetType().GetMethod(nameof(IEventHandler<>.HandleAsync), parameterTypes); + if (handle is not null) { - MethodInfo? handle = handler.GetType().GetMethod(nameof(IEventHandler<>.HandleAsync), parameterTypes); - if (handle is not null) - { - await (Task)handle.Invoke(handler, parameters)!; - } + await (Task)handle.Invoke(handler, parameters)!; } } } } + + /// + /// Finds the handlers of the specified event. + /// + /// The event. + /// The cancellation token. + /// The event handlers. + protected virtual async Task> GetHandlersAsync(IEvent @event, CancellationToken cancellationToken) + { + return ServiceProvider.GetServices(typeof(IEventHandler<>).MakeGenericType(@event.GetType())) + .Where(handler => handler is not null) + .Select(handler => handler!).ToList().AsReadOnly(); + } } From 3ebe675024f663848a8728002bd06c76324e4a56 Mon Sep 17 00:00:00 2001 From: Francis Pion Date: Sat, 29 Nov 2025 16:07:52 -0500 Subject: [PATCH 5/8] test --- .../EventBus.cs | 21 ++++++-- .../EventBusTests.cs | 51 +++++++++++++++++++ .../Gender.cs | 2 +- ...ntSourcing.Infrastructure.UnitTests.csproj | 1 + .../UserGenderChanged.cs | 2 +- .../UserLocaleChanged.cs | 2 +- 6 files changed, 72 insertions(+), 7 deletions(-) create mode 100644 tests/Logitar.EventSourcing.Infrastructure.UnitTests/EventBusTests.cs diff --git a/lib/Logitar.EventSourcing.Infrastructure/EventBus.cs b/lib/Logitar.EventSourcing.Infrastructure/EventBus.cs index d3528ca..26b6d46 100644 --- a/lib/Logitar.EventSourcing.Infrastructure/EventBus.cs +++ b/lib/Logitar.EventSourcing.Infrastructure/EventBus.cs @@ -7,6 +7,11 @@ namespace Logitar.EventSourcing.Infrastructure; /// public class EventBus : IEventBus { + /// + /// The name of the handler method. + /// + protected const string HandlerName = nameof(IEventHandler<>.HandleAsync); + /// /// Gets the service provider. /// @@ -36,10 +41,16 @@ public async Task PublishAsync(IEvent @event, CancellationToken cancellationToke object[] parameters = [@event, cancellationToken]; foreach (object handler in handlers) { - MethodInfo? handle = handler.GetType().GetMethod(nameof(IEventHandler<>.HandleAsync), parameterTypes); - if (handle is not null) + Type handlerType = handler.GetType(); + MethodInfo handle = handler.GetType().GetMethod(HandlerName, parameterTypes) + ?? throw new InvalidOperationException($"The handler {handlerType} must define a '{HandlerName}' method."); + if (handle.Invoke(handler, parameters) is Task task) + { + await task; + } + else { - await (Task)handle.Invoke(handler, parameters)!; + throw new InvalidOperationException($"The handler {handlerType} {HandlerName} method must return a {nameof(Task)}."); } } } @@ -55,6 +66,8 @@ protected virtual async Task> GetHandlersAsync(IEven { return ServiceProvider.GetServices(typeof(IEventHandler<>).MakeGenericType(@event.GetType())) .Where(handler => handler is not null) - .Select(handler => handler!).ToList().AsReadOnly(); + .Select(handler => handler!) + .ToList() + .AsReadOnly(); } } diff --git a/tests/Logitar.EventSourcing.Infrastructure.UnitTests/EventBusTests.cs b/tests/Logitar.EventSourcing.Infrastructure.UnitTests/EventBusTests.cs new file mode 100644 index 0000000..a709581 --- /dev/null +++ b/tests/Logitar.EventSourcing.Infrastructure.UnitTests/EventBusTests.cs @@ -0,0 +1,51 @@ +using Microsoft.Extensions.DependencyInjection; +using Moq; + +namespace Logitar.EventSourcing.Infrastructure; + +[Trait(Traits.Category, Categories.Unit)] +public class EventBusTests +{ + private readonly Mock> _userGenderChangedHandler = new(); + private readonly Mock> _userLocaleChangedHandler1 = new(); + private readonly Mock> _userLocaleChangedHandler2 = new(); + + public EventBusTests() + { + } + + [Fact(DisplayName = "PublishAsync: it should call all found event handlers.")] + public async Task Given_Handlers_When_PublishAsync_Then_AllCalled() + { + IServiceProvider serviceProvider = new ServiceCollection() + .AddSingleton(_userGenderChangedHandler.Object) + .AddSingleton(_userLocaleChangedHandler1.Object) + .AddSingleton(_userLocaleChangedHandler2.Object) + .BuildServiceProvider(); + EventBus eventBus = new(serviceProvider); + + UserLocaleChanged changed = new(CultureInfo.GetCultureInfo("fr-CA")); + CancellationToken cancellationToken = default; + + await eventBus.PublishAsync(changed, cancellationToken); + + _userLocaleChangedHandler1.Verify(x => x.HandleAsync(changed, cancellationToken), Times.Once); + _userLocaleChangedHandler2.Verify(x => x.HandleAsync(changed, cancellationToken), Times.Once); + } + + [Fact(DisplayName = "PublishAsync: it should not call any handler when there are none.")] + public async Task Given_NoHandler_When_PublishAsync_Then_NoneCalled() + { + IServiceProvider serviceProvider = new ServiceCollection() + .AddSingleton(_userGenderChangedHandler.Object) + .BuildServiceProvider(); + EventBus eventBus = new(serviceProvider); + + UserLocaleChanged changed = new(CultureInfo.GetCultureInfo("fr-CA")); + CancellationToken cancellationToken = default; + + await eventBus.PublishAsync(changed, cancellationToken); + + _userGenderChangedHandler.Verify(x => x.HandleAsync(It.IsAny(), It.IsAny()), Times.Never); + } +} diff --git a/tests/Logitar.EventSourcing.Infrastructure.UnitTests/Gender.cs b/tests/Logitar.EventSourcing.Infrastructure.UnitTests/Gender.cs index 77d8489..46bc965 100644 --- a/tests/Logitar.EventSourcing.Infrastructure.UnitTests/Gender.cs +++ b/tests/Logitar.EventSourcing.Infrastructure.UnitTests/Gender.cs @@ -1,6 +1,6 @@ namespace Logitar.EventSourcing.Infrastructure; -internal enum Gender +public enum Gender { Female, Male, diff --git a/tests/Logitar.EventSourcing.Infrastructure.UnitTests/Logitar.EventSourcing.Infrastructure.UnitTests.csproj b/tests/Logitar.EventSourcing.Infrastructure.UnitTests/Logitar.EventSourcing.Infrastructure.UnitTests.csproj index 0f58440..2800649 100644 --- a/tests/Logitar.EventSourcing.Infrastructure.UnitTests/Logitar.EventSourcing.Infrastructure.UnitTests.csproj +++ b/tests/Logitar.EventSourcing.Infrastructure.UnitTests/Logitar.EventSourcing.Infrastructure.UnitTests.csproj @@ -21,6 +21,7 @@ all runtime; build; native; contentfiles; analyzers; buildtransitive + diff --git a/tests/Logitar.EventSourcing.Infrastructure.UnitTests/UserGenderChanged.cs b/tests/Logitar.EventSourcing.Infrastructure.UnitTests/UserGenderChanged.cs index 74c3831..d6d6c93 100644 --- a/tests/Logitar.EventSourcing.Infrastructure.UnitTests/UserGenderChanged.cs +++ b/tests/Logitar.EventSourcing.Infrastructure.UnitTests/UserGenderChanged.cs @@ -1,3 +1,3 @@ namespace Logitar.EventSourcing.Infrastructure; -internal record UserGenderChanged(Gender? Gender) : DomainEvent; +public record UserGenderChanged(Gender? Gender) : DomainEvent; diff --git a/tests/Logitar.EventSourcing.Infrastructure.UnitTests/UserLocaleChanged.cs b/tests/Logitar.EventSourcing.Infrastructure.UnitTests/UserLocaleChanged.cs index d0bac3e..01d483e 100644 --- a/tests/Logitar.EventSourcing.Infrastructure.UnitTests/UserLocaleChanged.cs +++ b/tests/Logitar.EventSourcing.Infrastructure.UnitTests/UserLocaleChanged.cs @@ -1,3 +1,3 @@ namespace Logitar.EventSourcing.Infrastructure; -internal record UserLocaleChanged(CultureInfo Locale) : IEvent; +public record UserLocaleChanged(CultureInfo Locale) : IEvent; From 756562f62e2f1b43b7a2a09671d45d54fd0ad209 Mon Sep 17 00:00:00 2001 From: Francis Pion Date: Sat, 29 Nov 2025 16:08:32 -0500 Subject: [PATCH 6/8] NuGet --- .../Logitar.EventSourcing.Demo.csproj | 2 +- .../Logitar.EventSourcing.EntityFrameworkCore.PostgreSQL.csproj | 2 +- .../Logitar.EventSourcing.EntityFrameworkCore.Relational.csproj | 2 +- .../Logitar.EventSourcing.EntityFrameworkCore.SqlServer.csproj | 2 +- lib/Logitar.EventSourcing/Logitar.EventSourcing.csproj | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/demo/Logitar.EventSourcing.Demo/Logitar.EventSourcing.Demo.csproj b/demo/Logitar.EventSourcing.Demo/Logitar.EventSourcing.Demo.csproj index bb30054..82456d0 100644 --- a/demo/Logitar.EventSourcing.Demo/Logitar.EventSourcing.Demo.csproj +++ b/demo/Logitar.EventSourcing.Demo/Logitar.EventSourcing.Demo.csproj @@ -24,7 +24,7 @@ - + all diff --git a/lib/Logitar.EventSourcing.EntityFrameworkCore.PostgreSQL/Logitar.EventSourcing.EntityFrameworkCore.PostgreSQL.csproj b/lib/Logitar.EventSourcing.EntityFrameworkCore.PostgreSQL/Logitar.EventSourcing.EntityFrameworkCore.PostgreSQL.csproj index 963e7ae..d31cef6 100644 --- a/lib/Logitar.EventSourcing.EntityFrameworkCore.PostgreSQL/Logitar.EventSourcing.EntityFrameworkCore.PostgreSQL.csproj +++ b/lib/Logitar.EventSourcing.EntityFrameworkCore.PostgreSQL/Logitar.EventSourcing.EntityFrameworkCore.PostgreSQL.csproj @@ -39,7 +39,7 @@ - + diff --git a/lib/Logitar.EventSourcing.EntityFrameworkCore.Relational/Logitar.EventSourcing.EntityFrameworkCore.Relational.csproj b/lib/Logitar.EventSourcing.EntityFrameworkCore.Relational/Logitar.EventSourcing.EntityFrameworkCore.Relational.csproj index fd23eee..53a6328 100644 --- a/lib/Logitar.EventSourcing.EntityFrameworkCore.Relational/Logitar.EventSourcing.EntityFrameworkCore.Relational.csproj +++ b/lib/Logitar.EventSourcing.EntityFrameworkCore.Relational/Logitar.EventSourcing.EntityFrameworkCore.Relational.csproj @@ -39,7 +39,7 @@ - + diff --git a/lib/Logitar.EventSourcing.EntityFrameworkCore.SqlServer/Logitar.EventSourcing.EntityFrameworkCore.SqlServer.csproj b/lib/Logitar.EventSourcing.EntityFrameworkCore.SqlServer/Logitar.EventSourcing.EntityFrameworkCore.SqlServer.csproj index 54ebc7c..cf0836a 100644 --- a/lib/Logitar.EventSourcing.EntityFrameworkCore.SqlServer/Logitar.EventSourcing.EntityFrameworkCore.SqlServer.csproj +++ b/lib/Logitar.EventSourcing.EntityFrameworkCore.SqlServer/Logitar.EventSourcing.EntityFrameworkCore.SqlServer.csproj @@ -39,7 +39,7 @@ - + diff --git a/lib/Logitar.EventSourcing/Logitar.EventSourcing.csproj b/lib/Logitar.EventSourcing/Logitar.EventSourcing.csproj index b52486e..c4f609d 100644 --- a/lib/Logitar.EventSourcing/Logitar.EventSourcing.csproj +++ b/lib/Logitar.EventSourcing/Logitar.EventSourcing.csproj @@ -35,7 +35,7 @@ - + From 235597dfd3584866d398ad2cfff41f71e7e5f0e3 Mon Sep 17 00:00:00 2001 From: Francis Pion Date: Sat, 29 Nov 2025 16:10:56 -0500 Subject: [PATCH 7/8] changelog --- CHANGELOG.md | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ffe66a8..b37b01d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,7 +7,20 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] -Nothing yet. +### Added + +- `EventBus.GetHandlersAsync` method. +- `EventBus` unit tests. + +### Changed + +- Improved `EventBus` implementation. + +### Fixed + +- GitHub Actions. +- LICENSE Year. +- NuGet upgrades. ## [10.0.0] - 2025-11-29 From 6e2e61b2f99294dd3cf42e2140d42882e27fbd7b Mon Sep 17 00:00:00 2001 From: Francis Pion Date: Sat, 29 Nov 2025 16:11:48 -0500 Subject: [PATCH 8/8] workflows --- .github/workflows/build.yaml | 8 ++++---- .github/workflows/publish.yaml | 8 ++++---- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index 9afe32d..c71d2ee 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -15,12 +15,12 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout Repository - uses: actions/checkout@v4 + uses: actions/checkout@v6 - - name: Setup .NET9 - uses: actions/setup-dotnet@v4 + - name: Setup .NET + uses: actions/setup-dotnet@v5 with: - dotnet-version: 9.x + dotnet-version: 10.x - name: Restore dependencies run: dotnet restore diff --git a/.github/workflows/publish.yaml b/.github/workflows/publish.yaml index 2b348e2..db4af05 100644 --- a/.github/workflows/publish.yaml +++ b/.github/workflows/publish.yaml @@ -11,12 +11,12 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout Repository - uses: actions/checkout@v4 + uses: actions/checkout@v6 - - name: Setup .NET9 - uses: actions/setup-dotnet@v4 + - name: Setup .NET + uses: actions/setup-dotnet@v5 with: - dotnet-version: 9.x + dotnet-version: 10.x - name: Restore dependencies run: dotnet restore