< Summary

Information
Class: Elsa.Diagnostics.StructuredLogs.Persistence.Sqlite.Extensions.SqliteStructuredLogsModuleExtensions
Assembly: Elsa.Diagnostics.StructuredLogs.Persistence.Sqlite
File(s): /home/runner/work/elsa-core/elsa-core/src/modules/Elsa.Diagnostics.StructuredLogs.Persistence.Sqlite/Extensions/SqliteStructuredLogsModuleExtensions.cs
Line coverage
64%
Covered lines: 20
Uncovered lines: 11
Coverable lines: 31
Total lines: 67
Line coverage: 64.5%
Branch coverage
33%
Covered branches: 2
Total branches: 6
Branch coverage: 33.3%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
UseSqliteStorage(...)0%2040%
UseSqliteStorage(...)100%210%
AddSqliteStructuredLogPersistence(...)100%22100%
Copy(...)100%11100%

File(s)

/home/runner/work/elsa-core/elsa-core/src/modules/Elsa.Diagnostics.StructuredLogs.Persistence.Sqlite/Extensions/SqliteStructuredLogsModuleExtensions.cs

#LineLine coverage
 1using Elsa.Common;
 2using Elsa.Diagnostics.StructuredLogs.Features;
 3using Elsa.Diagnostics.StructuredLogs.Persistence.Relational.Contracts;
 4using Elsa.Diagnostics.StructuredLogs.Persistence.Relational.Extensions;
 5using Elsa.Diagnostics.StructuredLogs.Persistence.Relational.Options;
 6using Elsa.Diagnostics.StructuredLogs.Persistence.Sqlite.Features;
 7using Elsa.Diagnostics.StructuredLogs.Persistence.Sqlite.Options;
 8using Elsa.Diagnostics.StructuredLogs.Persistence.Sqlite.Services;
 9using Elsa.Extensions;
 10using Microsoft.Extensions.DependencyInjection;
 11using Microsoft.Extensions.DependencyInjection.Extensions;
 12using Microsoft.Extensions.Options;
 13
 14namespace Elsa.Diagnostics.StructuredLogs.Persistence.Sqlite.Extensions;
 15
 16public static class SqliteStructuredLogsModuleExtensions
 17{
 18    public static StructuredLogsFeature UseSqliteStorage(this StructuredLogsFeature feature, string connectionString, Ac
 19    {
 020        feature.Module.Use<SqliteStructuredLogPersistenceFeature>(sqlite =>
 021        {
 022            sqlite.ConfigureOptions = options =>
 023            {
 024                options.ConnectionString = connectionString;
 025                configure?.Invoke(options);
 026            };
 027        });
 28
 029        return feature;
 30    }
 31
 32    public static StructuredLogsFeature UseSqliteStorage(this StructuredLogsFeature feature, Action<SqliteStructuredLogO
 33    {
 034        feature.Module.Use<SqliteStructuredLogPersistenceFeature>(sqlite => sqlite.ConfigureOptions = configure);
 035        return feature;
 36    }
 37
 38    public static IServiceCollection AddSqliteStructuredLogPersistence(this IServiceCollection services, Action<SqliteSt
 39    {
 2840        if (configure != null)
 2841            services.Configure(configure);
 42
 2843        services.AddOptions<SqliteStructuredLogOptions>();
 5344        services.AddOptions<RelationalStructuredLogOptions>().Configure<IOptions<SqliteStructuredLogOptions>>((relationa
 45
 2846        services.TryAddSingleton<IRelationalStructuredLogConnectionFactory, SqliteStructuredLogConnectionFactory>();
 2847        services.TryAddSingleton<IRelationalStructuredLogDialect, SqliteStructuredLogDialect>();
 2848        services.TryAddSingleton<IStructuredLogSchemaMigrator, SqliteStructuredLogSchemaMigrator>();
 2849        services.TryAddSingleton<SqliteStructuredLogStartupService>();
 3450        services.AddHostedService(sp => sp.GetRequiredService<SqliteStructuredLogStartupService>());
 3151        services.AddScoped<IStartupTask>(sp => sp.GetRequiredService<SqliteStructuredLogStartupService>());
 2852        services.AddRelationalStructuredLogPersistence();
 53
 2854        return services;
 55    }
 56
 57    private static void Copy(RelationalStructuredLogOptions source, RelationalStructuredLogOptions target)
 58    {
 2559        target.WriteQueue.Capacity = source.WriteQueue.Capacity;
 2560        target.WriteQueue.BatchSize = source.WriteQueue.BatchSize;
 2561        target.WriteQueue.FlushInterval = source.WriteQueue.FlushInterval;
 2562        target.WriteQueue.ShutdownFlushTimeout = source.WriteQueue.ShutdownFlushTimeout;
 2563        target.Retention.MaxAge = source.Retention.MaxAge;
 2564        target.Retention.MaxRows = source.Retention.MaxRows;
 2565        target.Retention.CleanupOnStartup = source.Retention.CleanupOnStartup;
 2566    }
 67}