< Summary - Combined Code Coverage

Information
Class: NLightning.Node.Extensions.DatabaseExtensions
Assembly: NLightning.Node
File(s): /home/runner/work/nlightning/nlightning/src/NLightning.Node/Extensions/DatabaseExtensions.cs
Tag: 36_15743069263
Line coverage
0%
Covered lines: 0
Uncovered lines: 19
Coverable lines: 19
Total lines: 55
Line coverage: 0%
Branch coverage
0%
Covered branches: 0
Total branches: 4
Branch coverage: 0%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
MigrateDatabaseIfConfiguredAsync()0%2040%

File(s)

/home/runner/work/nlightning/nlightning/src/NLightning.Node/Extensions/DatabaseExtensions.cs

#LineLine coverage
 1using Microsoft.EntityFrameworkCore;
 2using Microsoft.Extensions.Configuration;
 3using Microsoft.Extensions.DependencyInjection;
 4using Microsoft.Extensions.Hosting;
 5using Microsoft.Extensions.Logging;
 6
 7namespace NLightning.Node.Extensions;
 8
 9using Infrastructure.Persistence.Contexts;
 10
 11public static class DatabaseExtensions
 12{
 13    /// <summary>
 14    /// Runs database migrations if configured to do so
 15    /// </summary>
 16    public static async Task MigrateDatabaseIfConfiguredAsync(this IHost host)
 17    {
 018        using var scope = host.Services.CreateScope();
 019        var configuration = scope.ServiceProvider.GetRequiredService<IConfiguration>();
 020        var logger = scope.ServiceProvider.GetRequiredService<ILogger<Program>>();
 21
 22        // Check if migrations should run
 023        var runMigrations = configuration.GetValue("Database:RunMigrations", false);
 24
 025        if (!runMigrations)
 26        {
 027            logger.LogInformation("Database migrations are disabled in configuration");
 028            return;
 29        }
 30
 31        try
 32        {
 033            var context = scope.ServiceProvider.GetRequiredService<NLightningDbContext>();
 34
 35            // Check if there are pending migrations
 036            var pendingMigrations = (await context.Database.GetPendingMigrationsAsync()).ToList();
 37
 038            if (pendingMigrations.Count > 0)
 39            {
 040                logger.LogInformation("Found {Count} pending migrations. Applying...", pendingMigrations.Count);
 041                await context.Database.MigrateAsync();
 042                logger.LogInformation("Database migrations completed successfully");
 43            }
 44            else
 45            {
 046                logger.LogInformation("Database is up to date, no migrations needed");
 47            }
 048        }
 049        catch (Exception ex)
 50        {
 051            logger.LogError(ex, "An error occurred while applying database migrations");
 052            throw;
 53        }
 054    }
 55}