Skip to content

Commit

Permalink
feat: or-1349 split duplicate detection (#616)
Browse files Browse the repository at this point in the history
* feat: or-1349 split duplicate detection

* chore: or-1349 clean up code
  • Loading branch information
koenmetsu authored Jan 25, 2024
1 parent 81795f2 commit 8595bb8
Show file tree
Hide file tree
Showing 5 changed files with 103 additions and 120 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,6 @@ namespace AssociationRegistry.Admin.ProjectionHost.Infrastructure.Program.WebApp
using Schema.Detail;
using Schema.Historiek;
using System.Configuration;
using Wolverine;
using ConfigurationManager = Microsoft.Extensions.Configuration.ConfigurationManager;

public static class ConfigureMartenExtensions
Expand Down Expand Up @@ -94,17 +93,24 @@ static JsonNetSerializer CreateCustomMartenSerializer()

opts.Projections.Add(
new MartenSubscription(
new MartenEventsConsumer(
serviceProvider.GetRequiredService<IMessageBus>(),
new DuplicateDetectionProjectionHandler(
serviceProvider.GetRequiredService<IElasticRepository>()),
new BeheerZoekenEventsConsumer(
new BeheerZoekProjectionHandler(
serviceProvider.GetRequiredService<IElasticRepository>())
)
),
ProjectionLifecycle.Async,
ProjectionNames.VerenigingZoeken);

opts.Projections.Add(
new MartenSubscription(
new DuplicateDetectionEventsConsumer(
new DuplicateDetectionProjectionHandler(
serviceProvider.GetRequiredService<IElasticRepository>())
)
),
ProjectionLifecycle.Async,
ProjectionNames.DuplicateDetection);

opts.Serializer(CreateCustomMartenSerializer());

opts.RegisterDocumentType<BeheerVerenigingDetailDocument>();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,4 +3,5 @@
public class ProjectionNames
{
public const string VerenigingZoeken = "BeheerVerenigingZoekenDocument";
public const string DuplicateDetection = "DuplicateDetection";
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
namespace AssociationRegistry.Admin.ProjectionHost.Projections.Search;

using DuplicateDetection;
using Events;
using Marten.Events;
using Wolverine;
using Wolverine.Runtime.Routing;
using Zoeken;
using IEvent = Framework.IEvent;

public class BeheerZoekenEventsConsumer : IMartenEventsConsumer
{
private readonly BeheerZoekProjectionHandler _zoekProjectionHandler;

public BeheerZoekenEventsConsumer(BeheerZoekProjectionHandler zoekProjectionHandler)
{
_zoekProjectionHandler = zoekProjectionHandler;
}

public async Task ConsumeAsync(IReadOnlyList<StreamAction> streamActions)
{
foreach (var @event in streamActions.SelectMany(streamAction => streamAction.Events))
{
dynamic eventEnvelope =
Activator.CreateInstance(typeof(EventEnvelope<>).MakeGenericType(@event.EventType), @event)!;

switch (@event.EventType.Name)
{
case nameof(DoelgroepWerdGewijzigd):
case nameof(FeitelijkeVerenigingWerdGeregistreerd):
case nameof(HoofdactiviteitenVerenigingsloketWerdenGewijzigd):
case nameof(KorteNaamWerdGewijzigd):
case nameof(LocatieWerdGewijzigd):
case nameof(LocatieWerdToegevoegd):
case nameof(LocatieWerdVerwijderd):
case nameof(MaatschappelijkeZetelVolgensKBOWerdGewijzigd):
case nameof(MaatschappelijkeZetelWerdOvergenomenUitKbo):
case nameof(NaamWerdGewijzigd):
case nameof(RoepnaamWerdGewijzigd):
case nameof(VerenigingMetRechtspersoonlijkheidWerdGeregistreerd):
case nameof(VerenigingWerdGestopt):
case nameof(VerenigingWerdIngeschrevenInPubliekeDatastroom):
case nameof(VerenigingWerdUitgeschrevenUitPubliekeDatastroom):
case nameof(VerenigingWerdVerwijderd):
await _zoekProjectionHandler.Handle(eventEnvelope);
break;
}
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
namespace AssociationRegistry.Admin.ProjectionHost.Projections.Search;

using DuplicateDetection;
using Events;
using Marten.Events;

public class DuplicateDetectionEventsConsumer : IMartenEventsConsumer
{
private readonly DuplicateDetectionProjectionHandler _duplicateDetectionProjectionHandler;

public DuplicateDetectionEventsConsumer(DuplicateDetectionProjectionHandler duplicateDetectionProjectionHandler)
{
_duplicateDetectionProjectionHandler = duplicateDetectionProjectionHandler;
}

public async Task ConsumeAsync(IReadOnlyList<StreamAction> streamActions)
{
foreach (var @event in streamActions.SelectMany(streamAction => streamAction.Events))
{
dynamic eventEnvelope =
(IEventEnvelope)Activator.CreateInstance(typeof(EventEnvelope<>).MakeGenericType(@event.EventType), @event)!;

switch (@event.EventType.Name)
{
case nameof(FeitelijkeVerenigingWerdGeregistreerd):
case nameof(HoofdactiviteitenVerenigingsloketWerdenGewijzigd):
case nameof(KorteNaamWerdGewijzigd):
case nameof(LocatieWerdGewijzigd):
case nameof(LocatieWerdToegevoegd):
case nameof(LocatieWerdVerwijderd):
case nameof(MaatschappelijkeZetelWerdOvergenomenUitKbo):
case nameof(NaamWerdGewijzigd):
case nameof(VerenigingMetRechtspersoonlijkheidWerdGeregistreerd):
case nameof(VerenigingWerdGestopt):
case nameof(VerenigingWerdVerwijderd):
await _duplicateDetectionProjectionHandler.Handle(eventEnvelope);
break;
}
}
}
}

This file was deleted.

0 comments on commit 8595bb8

Please sign in to comment.