< Summary

Information
Class: Elsa.Persistence.EFCore.Modules.Runtime.EFCoreWorkflowRuntimePersistenceFeature
Assembly: Elsa.Persistence.EFCore
File(s): /home/runner/work/elsa-core/elsa-core/src/modules/Elsa.Persistence.EFCore/Modules/Runtime/WorkflowRuntimePersistenceFeature.cs
Line coverage
100%
Covered lines: 27
Uncovered lines: 0
Coverable lines: 27
Total lines: 56
Line coverage: 100%
Branch coverage
100%
Covered branches: 2
Total branches: 2
Branch coverage: 100%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
.ctor(...)100%11100%
get_UseWorkflowCommitTransaction()100%11100%
Configure()100%11100%
Apply()100%22100%

File(s)

/home/runner/work/elsa-core/elsa-core/src/modules/Elsa.Persistence.EFCore/Modules/Runtime/WorkflowRuntimePersistenceFeature.cs

#LineLine coverage
 1using Elsa.Features.Attributes;
 2using Elsa.Features.Services;
 3using Elsa.KeyValues.Entities;
 4using Elsa.KeyValues.Features;
 5using Elsa.Workflows.Runtime;
 6using Elsa.Workflows.Runtime.Entities;
 7using Elsa.Workflows.Runtime.Features;
 8using Microsoft.Extensions.DependencyInjection;
 9
 10namespace Elsa.Persistence.EFCore.Modules.Runtime;
 11
 12/// <summary>
 13/// Configures the default workflow runtime to use EF Core persistence providers.
 14/// </summary>
 15[DependsOn(typeof(WorkflowRuntimeFeature))]
 316public class EFCoreWorkflowRuntimePersistenceFeature(IModule module) : PersistenceFeatureBase<EFCoreWorkflowRuntimePersi
 17{
 18    /// <summary>
 19    /// Gets or sets whether to wrap workflow commit persistence in an EF Core transaction.
 20    /// </summary>
 621    public bool UseWorkflowCommitTransaction { get; set; }
 22
 23    /// <inheritdoc />
 24    public override void Configure()
 25    {
 326        Module.Configure<KeyValueFeature>(feature =>
 327        {
 328            feature.KeyValueStore = sp => sp.GetRequiredService<EFCoreKeyValueStore>();
 629        });
 330        Module.Configure<WorkflowRuntimeFeature>(feature =>
 331        {
 43132            feature.TriggerStore = sp => sp.GetRequiredService<EFCoreTriggerStore>();
 61633            feature.BookmarkStore = sp => sp.GetRequiredService<EFCoreBookmarkStore>();
 61034            feature.BookmarkQueueStore = sp => sp.GetRequiredService<EFBookmarkQueueStore>();
 23135            feature.BookmarkQueueDeadLetterStore = sp => sp.GetRequiredService<EFBookmarkQueueDeadLetterStore>();
 40636            feature.WorkflowExecutionLogStore = sp => sp.GetRequiredService<EFCoreWorkflowExecutionLogStore>();
 40937            feature.ActivityExecutionLogStore = sp => sp.GetRequiredService<EFCoreActivityExecutionStore>();
 638        });
 339    }
 40
 41    /// <inheritdoc />
 42    public override void Apply()
 43    {
 344        base.Apply();
 345        AddEntityStore<StoredTrigger, EFCoreTriggerStore>();
 346        AddStore<StoredBookmark, EFCoreBookmarkStore>();
 347        AddStore<BookmarkQueueItem, EFBookmarkQueueStore>();
 348        AddStore<BookmarkQueueDeadLetterItem, EFBookmarkQueueDeadLetterStore>();
 349        AddEntityStore<WorkflowExecutionLogRecord, EFCoreWorkflowExecutionLogStore>();
 350        AddEntityStore<ActivityExecutionRecord, EFCoreActivityExecutionStore>();
 351        AddStore<SerializedKeyValuePair, EFCoreKeyValueStore>();
 52
 353        if (UseWorkflowCommitTransaction)
 354            Services.AddScoped<IWorkflowCommitTransaction, EFCoreWorkflowCommitTransaction>();
 355    }
 56}