< Summary - Syki

Information
Class: Syki.Back.Database.Interceptors.SaveDomainEventsInterceptor
Assembly: Back
File(s): /home/runner/work/syki/syki/Back/Database/Interceptors/SaveDomainEventsInterceptor.cs
Tag: 4_16869239191
Line coverage
100%
Covered lines: 24
Uncovered lines: 0
Coverable lines: 24
Total lines: 42
Line coverage: 100%
Branch coverage
93%
Covered branches: 15
Total branches: 16
Branch coverage: 93.7%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
SavingChangesAsync()90%1010100%

File(s)

/home/runner/work/syki/syki/Back/Database/Interceptors/SaveDomainEventsInterceptor.cs

#LineLine coverage
 1using System.Diagnostics;
 2using Microsoft.EntityFrameworkCore.Diagnostics;
 3using Syki.Back.Features.Cross.CreateInstitution;
 4using Microsoft.EntityFrameworkCore.Infrastructure;
 5
 6namespace Syki.Back.Database.Interceptors;
 7
 8public sealed class SaveDomainEventsInterceptor : SaveChangesInterceptor
 9{
 10  public override async ValueTask<InterceptionResult<int>> SavingChangesAsync(DbContextEventData eventData, Interception
 11  {
 1532012        var activityId = Activity.Current?.Id;
 13
 1532014        var httpContextAccessor = eventData.Context.GetService<IHttpContextAccessor>();
 1532015        var ctx = httpContextAccessor?.HttpContext;
 1532016        Guid? institutionId = (ctx != null && ctx.User.IsAuthenticated) ? ctx.User.InstitutionId : null;
 17
 1532018        var domainEvents = eventData.Context.ChangeTracker
 1532019            .Entries<Entity>()
 1532020            .SelectMany(entry =>
 1532021            {
 747622                var entity = entry.Entity;
 747623                var domainEvents = entity.GetDomainEvents();
 1242224                if (domainEvents.Count == 0) return [];
 1532025
 253026                entity.ClearDomainEvents();
 1532027
 253028                var entityId = entry.Property<Guid>("Id").CurrentValue;
 253029                institutionId ??= (entry.Entity is Institution) ? entityId : entry.Property<Guid>("InstitutionId").Curre
 1532030
 506031                return domainEvents.Select(evt => new DomainEvent(institutionId.Value, entityId, evt, activityId));
 1532032            })
 1532033            .ToList();
 34
 3570035        foreach (var evt in domainEvents)
 36        {
 253037            eventData.Context.Add(evt);
 38        }
 39
 3064040    return await Task.Run(() => result);
 1532041  }
 42}

Methods/Properties

SavingChangesAsync()