Skip to content

Commit a2e14e3

Browse files
JeffreyJeffrey
authored andcommitted
Added extension method for mediatr to publish domain events
1 parent 65170fe commit a2e14e3

4 files changed

Lines changed: 25 additions & 79 deletions

File tree

Directory.Build.props

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
<Project>
22
<PropertyGroup>
33
<ManagePackageVersionsCentrally>true</ManagePackageVersionsCentrally>
4-
<!--<TreatWarningsAsErrors>true</TreatWarningsAsErrors>-->
4+
<TreatWarningsAsErrors>true</TreatWarningsAsErrors>
55
<TargetFramework>net8.0</TargetFramework>
66
<ImplicitUsings>enable</ImplicitUsings>
77
<Nullable>enable</Nullable>

src/Jpc.SharedKernel/IdGuidValueBase.cs

Lines changed: 0 additions & 76 deletions
This file was deleted.

src/Jpc.SharedKernel/Jpc.SharedKernel.csproj

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,9 @@
1313
<PackageTags>DDD;Shared Kernel;SharedKernel;Domain-Driven Design;Repository;Specification;ValueObject;Value Object;Jpc;Clean;Clean Architecture;Clean Architecture Template</PackageTags>
1414
<PackageIcon>icon.png</PackageIcon>
1515

16-
<Version>1.1.0</Version>
16+
<Version>1.2.0</Version>
1717
<PackageReleaseNotes>
18-
18+
Added extension method for mediatr to publish domain events
1919
</PackageReleaseNotes>
2020

2121
<PublishRepositoryUrl>true</PublishRepositoryUrl>
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
using MediatR;
2+
3+
namespace Jpc.SharedKernel;
4+
5+
static class MediatorExtension
6+
{
7+
public static async Task DispatchDomainEventsAsync(this IMediator mediator, IEnumerable<HasDomainEventsBase> entitiesWithEvents)
8+
{
9+
var domainEntities = entitiesWithEvents
10+
.Where(x => x.DomainEvents != null && x.DomainEvents.Any());
11+
12+
var domainEvents = domainEntities
13+
.SelectMany(x => x.DomainEvents)
14+
.ToList();
15+
16+
domainEntities.ToList()
17+
.ForEach(entity => entity.ClearDomainEvents());
18+
19+
foreach (var domainEvent in domainEvents)
20+
await mediator.Publish(domainEvent);
21+
}
22+
}

0 commit comments

Comments
 (0)