Skip to content

Commit a5cb14b

Browse files
authored
Merge pull request #19 from cnblogs/fix-domain-event-generator
fix: extract domain event publish method
2 parents 6a61bae + 7c35890 commit a5cb14b

File tree

7 files changed

+16
-20
lines changed

7 files changed

+16
-20
lines changed

src/Cnblogs.Architecture.Ddd.Cqrs.DependencyInjection.EventBus.Dapr/DaprEventBusServiceCollectionExtensions.cs

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,11 @@
1-
using Cnblogs.Architecture.Ddd.Cqrs.DependencyInjection.EventBus.Dapr;
1+
using System.Reflection;
2+
using Cnblogs.Architecture.Ddd.Cqrs.DependencyInjection.EventBus.Dapr;
23
using Cnblogs.Architecture.Ddd.EventBus.Abstractions;
34
using Cnblogs.Architecture.Ddd.EventBus.Dapr;
45
using Dapr.Client;
56
using MediatR;
6-
using System.Reflection;
77

8+
// ReSharper disable once CheckNamespace
89
namespace Microsoft.Extensions.DependencyInjection;
910

1011
/// <summary>
@@ -36,5 +37,4 @@ public static IServiceCollection AddDaprEventBus(
3637

3738
return services;
3839
}
39-
4040
}

src/Cnblogs.Architecture.Ddd.EventBus.Dapr/EndPointExtensions.cs

-2
Original file line numberDiff line numberDiff line change
@@ -115,7 +115,6 @@ private static void EnsureEventBusRegistered(this IEndpointRouteBuilder builder,
115115
}
116116

117117
daprOptions.IsEventBusRegistered = true;
118-
return;
119118
}
120119

121120
private static void EnsureDaprSubscribeHandlerMapped(this IEndpointRouteBuilder builder, DaprOptions daprOptions)
@@ -132,7 +131,6 @@ private static void EnsureDaprSubscribeHandlerMapped(this IEndpointRouteBuilder
132131

133132
builder.MapSubscribeHandler();
134133
daprOptions.IsDaprSubscribeHandlerMapped = true;
135-
return;
136134
}
137135

138136
private static DaprOptions GetDaprOptions(this IEndpointRouteBuilder builder)

src/Cnblogs.Architecture.Ddd.Infrastructure.EntityFramework/BaseRepository.cs

+12-7
Original file line numberDiff line numberDiff line change
@@ -148,24 +148,29 @@ private async Task<bool> SaveEntitiesInternalAsync(
148148
bool dispatchDomainEventFirst = false,
149149
CancellationToken cancellationToken = default)
150150
{
151-
var entities = Context.ExtractDomainEventSources();
152-
var domainEvents = entities.SelectMany(x => x.DomainEvents!.OfType<DomainEvent>()).ToList();
153-
entities.ForEach(x => x.ClearDomainEvents());
154151
if (dispatchDomainEventFirst)
155152
{
153+
await ExtraAndPublishDomainEventsAsync();
156154
await SaveChangesAsync(cancellationToken);
157155
}
158-
159-
await BeforeDispatchDomainEventAsync(domainEvents, Context);
160-
await _mediator.DispatchDomainEventsAsync(domainEvents);
161-
if (dispatchDomainEventFirst == false)
156+
else
162157
{
163158
await SaveChangesAsync(cancellationToken);
159+
await ExtraAndPublishDomainEventsAsync();
164160
}
165161

166162
return true;
167163
}
168164

165+
private async Task ExtraAndPublishDomainEventsAsync()
166+
{
167+
var entities = Context.ExtractDomainEventSources();
168+
var domainEvents = entities.SelectMany(x => x.DomainEvents!.OfType<DomainEvent>()).ToList();
169+
entities.ForEach(x => x.ClearDomainEvents());
170+
await BeforeDispatchDomainEventAsync(domainEvents, Context);
171+
await _mediator.DispatchDomainEventsAsync(domainEvents);
172+
}
173+
169174
private void CallBeforeUpdate()
170175
{
171176
var domainEntities = Context.ChangeTracker

test/Cnblogs.Architecture.IntegrationTestProject/EventHandlers/TestIntegrationEventHandler.cs

+1-3
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,5 @@
1-
using System.Diagnostics;
2-
using Cnblogs.Architecture.Ddd.EventBus.Abstractions;
1+
using Cnblogs.Architecture.Ddd.EventBus.Abstractions;
32
using Cnblogs.Architecture.TestIntegrationEvents;
4-
using MediatR;
53

64
namespace Cnblogs.Architecture.IntegrationTestProject.EventHandlers;
75

test/Cnblogs.Architecture.IntegrationTests/DaprTests.cs

-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
using Cnblogs.Architecture.TestIntegrationEvents;
44
using FluentAssertions;
55
using Microsoft.AspNetCore.Builder;
6-
using Microsoft.AspNetCore.Routing;
76
using Microsoft.AspNetCore.TestHost;
87
using Microsoft.Extensions.DependencyInjection;
98

test/Cnblogs.Architecture.IntegrationTests/IntegrationEventHandlerTests.cs

-3
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,7 @@
33
using Cnblogs.Architecture.IntegrationTestProject.EventHandlers;
44
using Cnblogs.Architecture.TestIntegrationEvents;
55
using FluentAssertions;
6-
using MediatR;
76
using Microsoft.AspNetCore.Builder;
8-
using Microsoft.AspNetCore.Http;
9-
using Microsoft.AspNetCore.Mvc.Testing;
107
using Microsoft.AspNetCore.TestHost;
118
using Microsoft.Extensions.DependencyInjection;
129
using Xunit.Abstractions;

test/Cnblogs.Architecture.UnitTests/EventBus/AssemblyAttributeTests.cs

-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
using Cnblogs.Architecture.TestIntegrationEvents;
22
using FluentAssertions;
33
using Microsoft.AspNetCore.Builder;
4-
using Microsoft.AspNetCore.Routing;
54
using Microsoft.Extensions.DependencyInjection;
65

76
namespace Cnblogs.Architecture.UnitTests.EventBus;

0 commit comments

Comments
 (0)