< Summary

Information
Class: ProjectTemplate.Infrastructure.Data.Services.DataAccessStartupLogger
Assembly: ProjectTemplate.Web
File(s): /home/runner/work/NetCoreApplicationTemplate/NetCoreApplicationTemplate/src/ProjectTemplate.Web/Services/DataAccessStartupLogger.cs
Line coverage
87%
Covered lines: 29
Uncovered lines: 4
Coverable lines: 33
Total lines: 93
Line coverage: 87.8%
Branch coverage
66%
Covered branches: 4
Total branches: 6
Branch coverage: 66.6%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
.ctor(...)100%11100%
StartAsync(...)50%4480.95%
StopAsync(...)100%11100%
LogSqlServerMigrationPosture(...)100%22100%

File(s)

/home/runner/work/NetCoreApplicationTemplate/NetCoreApplicationTemplate/src/ProjectTemplate.Web/Services/DataAccessStartupLogger.cs

#LineLine coverage
 1using Microsoft.EntityFrameworkCore.Migrations;
 2using Microsoft.Extensions.Options;
 3using ProjectTemplate.Infrastructure.Data.Options;
 4
 5namespace ProjectTemplate.Infrastructure.Data.Services;
 6
 987internal sealed partial class DataAccessStartupLogger(
 988    ILogger<DataAccessStartupLogger> logger,
 989    IOptions<DataAccessOptions> options) : IHostedService
 10{
 11    public Task StartAsync(CancellationToken cancellationToken)
 12    {
 9813        if (DataAccessOptions.IsDisabledProvider(options.Value.Provider))
 14        {
 015            LogDataAccessDisabled(
 016                logger,
 017                options.Value.Provider);
 18
 019            return Task.CompletedTask;
 20        }
 21
 9822        LogDataAccessConfiguration(
 9823            logger,
 9824            options.Value.Provider,
 9825            options.Value.ConnectionStringName,
 9826            options.Value.Auditing.Enabled ? "enabled" : "disabled",
 9827            options.Value.Auditing.StorageMode);
 28
 9829        bool hasMigrationHistory = typeof(ApplicationDbContext).Assembly
 9830            .GetTypes()
 9831            .Any(static type =>
 9832                !type.IsAbstract
 9833                && typeof(Migration).IsAssignableFrom(type));
 34
 9835        LogSqlServerMigrationPosture(
 9836            logger,
 9837            options.Value.Provider,
 9838            hasMigrationHistory);
 39
 9840        return Task.CompletedTask;
 41    }
 42
 43    public Task StopAsync(CancellationToken cancellationToken)
 44    {
 19645        return Task.CompletedTask;
 46    }
 47
 48    internal static bool LogSqlServerMigrationPosture(
 49        ILogger logger,
 50        string provider,
 51        bool hasMigrationHistory)
 52    {
 10453        ArgumentNullException.ThrowIfNull(logger);
 54
 10455        if (!provider.Trim().Equals(
 10456                DataAccessOptions.SqlServerProvider,
 10457                StringComparison.OrdinalIgnoreCase)
 10458            || hasMigrationHistory)
 59        {
 10360            return false;
 61        }
 62
 163        LogSqlServerMigrationHistoryMissing(logger);
 64
 165        return true;
 66    }
 67
 68    [LoggerMessage(
 69        EventId = 19100,
 70        Level = LogLevel.Information,
 71        Message = "Data access configured. Provider: {Provider}; ConnectionStringName: {ConnectionStringName}; EF Core a
 72    private static partial void LogDataAccessConfiguration(
 73        ILogger logger,
 74        string provider,
 75        string connectionStringName,
 76        string auditingStatus,
 77        string auditStorageMode);
 78
 79    [LoggerMessage(
 80        EventId = 19101,
 81        Level = LogLevel.Information,
 82        Message = "Application data access disabled. Provider: {Provider}; EF Core services were not registered.")]
 83    private static partial void LogDataAccessDisabled(
 84        ILogger logger,
 85        string provider);
 86
 87    [LoggerMessage(
 88        EventId = 19102,
 89        Level = LogLevel.Warning,
 90        Message = "SQL Server is configured, but no EF Core migration history was discovered in the application assembly
 91    private static partial void LogSqlServerMigrationHistoryMissing(
 92        ILogger logger);
 93}