Skip to content

Commit

Permalink
even if multiple relations exists from a route network element to an …
Browse files Browse the repository at this point in the history
…interest, then insert only one record in the route element to interest relation table
  • Loading branch information
jesper-dax committed Jan 26, 2022
1 parent 2a2253c commit 1839992
Showing 1 changed file with 25 additions and 4 deletions.
29 changes: 25 additions & 4 deletions OpenFTTH.RelationalProjector/RelationalDatabaseProjection.cs
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
using Microsoft.Extensions.Logging;
using OpenFTTH.EventSourcing;
using OpenFTTH.RelationalProjector.Database;
using OpenFTTH.RouteNetwork.API.Model;
using OpenFTTH.RouteNetwork.Business.Interest.Events;
using OpenFTTH.UtilityGraphService.API.Model.UtilityNetwork;
using OpenFTTH.UtilityGraphService.Business.Graph.Projections;
Expand Down Expand Up @@ -96,24 +97,25 @@ private void Handle(WalkOfInterestRegistered @event)
{
if (_bulkMode)
{
_interestToRouteElementRel[@event.Interest.Id] = @event.Interest.RouteNetworkElementRefs.ToArray();
_interestToRouteElementRel[@event.Interest.Id] = RemoveDublicatedIds(@event.Interest.RouteNetworkElementRefs).ToArray();
}
else
{
_dbWriter.InsertGuidsIntoRouteElementToInterestTable(_schemaName, @event.Interest.Id, @event.Interest.RouteNetworkElementRefs);
_dbWriter.InsertGuidsIntoRouteElementToInterestTable(_schemaName, @event.Interest.Id, RemoveDublicatedIds(@event.Interest.RouteNetworkElementRefs));
}
}


private void Handle(WalkOfInterestRouteNetworkElementsModified @event)
{
if (_bulkMode)
{
_interestToRouteElementRel[@event.InterestId] = @event.RouteNetworkElementIds.ToArray();
_interestToRouteElementRel[@event.InterestId] = RemoveDublicatedIds(@event.RouteNetworkElementIds).ToArray();
}
else
{
_dbWriter.DeleteGuidsFromRouteElementToInterestTable(_schemaName, @event.InterestId);
_dbWriter.InsertGuidsIntoRouteElementToInterestTable(_schemaName, @event.InterestId, @event.RouteNetworkElementIds);
_dbWriter.InsertGuidsIntoRouteElementToInterestTable(_schemaName, @event.InterestId, RemoveDublicatedIds(@event.RouteNetworkElementIds));
}
}

Expand Down Expand Up @@ -207,5 +209,24 @@ public override void DehydrationFinish()


}


private IEnumerable<Guid> RemoveDublicatedIds(RouteNetworkElementIdList routeNetworkElementRefs)
{
RouteNetworkElementIdList result = new();

HashSet<Guid> alreadyAdded = new();

foreach (var id in routeNetworkElementRefs)
{
if (!alreadyAdded.Contains(id))
{
alreadyAdded.Add(id);
result.Add(id);
}
}

return result;
}
}
}

0 comments on commit 1839992

Please sign in to comment.