< Summary - Syki

Information
Class: Syki.Back.Database.Interceptors.SaveDomainEventsInterceptor
Assembly: Back
File(s): /home/runner/work/syki/syki/Back/Database/Interceptors/SaveDomainEventsInterceptor.cs
Tag: 21_17346963026
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  {
 1656812        var activityId = Activity.Current?.Id;
 13
 1656814        var httpContextAccessor = eventData.Context.GetService<IHttpContextAccessor>();
 1656815        var ctx = httpContextAccessor?.HttpContext;
 1656816        Guid? institutionId = (ctx != null && ctx.User.IsAuthenticated) ? ctx.User.InstitutionId : null;
 17
 1656818        var domainEvents = eventData.Context.ChangeTracker
 1656819            .Entries<Entity>()
 1656820            .SelectMany(entry =>
 1656821            {
 847222                var entity = entry.Entity;
 847223                var domainEvents = entity.GetDomainEvents();
 1427224                if (domainEvents.Count == 0) return [];
 1656825
 267226                entity.ClearDomainEvents();
 1656827
 267228                var entityId = entry.Property<Guid>("Id").CurrentValue;
 267229                institutionId ??= (entry.Entity is Institution) ? entityId : entry.Property<Guid>("InstitutionId").Curre
 1656830
 534431                return domainEvents.Select(evt => new DomainEvent(institutionId.Value, entityId, evt, activityId));
 1656832            })
 1656833            .ToList();
 34
 3848035        foreach (var evt in domainEvents)
 36        {
 267237            eventData.Context.Add(evt);
 38        }
 39
 3313640    return await Task.Run(() => result);
 1656841  }
 42}

Methods/Properties

SavingChangesAsync()