< Summary

Information
Class: Nabs.Persistence.TenantQueryExtensions
Assembly: Nabs.Persistence
File(s): /home/runner/work/Nabs/Nabs/src/Nabs.Persistence/TenantQueryExtensions.cs
Tag: 90_14636759620
Line coverage
100%
Covered lines: 12
Uncovered lines: 0
Coverable lines: 12
Total lines: 31
Line coverage: 100%
Branch coverage
N/A
Covered branches: 0
Total branches: 0
Branch coverage: N/A
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
AddTenantEntityQueryFilter(...)100%11100%
SetupTenantQueryFilter(...)100%11100%

File(s)

/home/runner/work/Nabs/Nabs/src/Nabs.Persistence/TenantQueryExtensions.cs

#LineLine coverage
 1namespace Nabs.Persistence;
 2
 3internal static class TenantQueryExtensions
 4{
 5    public static void AddTenantEntityQueryFilter(
 6        this IMutableEntityType entityType,
 7        ITenantableDbContext tenantableDbContext)
 8    {
 19        var tenantIdProperty = entityType.AddProperty("TenantId", typeof(Guid));
 110        entityType.AddIndex(tenantIdProperty);
 11
 112        var methodToCall = typeof(TenantQueryExtensions)
 113               .GetMethod(nameof(SetupTenantQueryFilter),
 114                   BindingFlags.NonPublic | BindingFlags.Static)!
 115               .MakeGenericMethod(entityType.ClrType);
 16
 117        var filter = methodToCall.Invoke(null, [tenantableDbContext]);
 18
 119        entityType.SetQueryFilter((LambdaExpression)filter!);
 120    }
 21
 22    private static Expression<Func<TEntity, bool>> SetupTenantQueryFilter<TEntity>(
 23        ITenantableDbContext tenantableDbContext)
 24           where TEntity : class, ITenantableEntity
 25    {
 126        Expression<Func<TEntity, bool>> filter = entity =>
 127            EF.Property<Guid>(entity, "TenantId") == tenantableDbContext.ApplicationContext.TenantContext.TenantId;
 28
 129        return filter;
 30    }
 31}