< 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    {
 2040        if (configure != null)
 2041            services.Configure(configure);
 42
 2043        services.AddOptions<SqliteStructuredLogOptions>();
 3844        services.AddOptions<RelationalStructuredLogOptions>().Configure<IOptions<SqliteStructuredLogOptions>>((relationa
 45
 2046        services.TryAddSingleton<IRelationalStructuredLogConnectionFactory, SqliteStructuredLogConnectionFactory>();
 2047        services.TryAddSingleton<IRelationalStructuredLogDialect, SqliteStructuredLogDialect>();
 2048        services.TryAddSingleton<IStructuredLogSchemaMigrator, SqliteStructuredLogSchemaMigrator>();
 2049        services.TryAddSingleton<SqliteStructuredLogStartupService>();
 2650        services.AddHostedService(sp => sp.GetRequiredService<SqliteStructuredLogStartupService>());
 2351        services.AddScoped<IStartupTask>(sp => sp.GetRequiredService<SqliteStructuredLogStartupService>());
 2052        services.AddRelationalStructuredLogPersistence();
 53
 2054        return services;
 55    }
 56
 57    private static void Copy(RelationalStructuredLogOptions source, RelationalStructuredLogOptions target)
 58    {
 1859        target.WriteQueue.Capacity = source.WriteQueue.Capacity;
 1860        target.WriteQueue.BatchSize = source.WriteQueue.BatchSize;
 1861        target.WriteQueue.FlushInterval = source.WriteQueue.FlushInterval;
 1862        target.WriteQueue.ShutdownFlushTimeout = source.WriteQueue.ShutdownFlushTimeout;
 1863        target.Retention.MaxAge = source.Retention.MaxAge;
 1864        target.Retention.MaxRows = source.Retention.MaxRows;
 1865        target.Retention.CleanupOnStartup = source.Retention.CleanupOnStartup;
 1866    }
 67}