< Summary

Information
Class: Elsa.Scheduling.StartupTasks.CreateSchedulesStartupTask
Assembly: Elsa.Scheduling
File(s): /home/runner/work/elsa-core/elsa-core/src/modules/Elsa.Scheduling/StartupTasks/CreateSchedulesStartupTask.cs
Line coverage
100%
Covered lines: 27
Uncovered lines: 0
Coverable lines: 27
Total lines: 50
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%
ExecuteAsync()100%22100%
CreateSchedulesAsync()100%11100%

File(s)

/home/runner/work/elsa-core/elsa-core/src/modules/Elsa.Scheduling/StartupTasks/CreateSchedulesStartupTask.cs

#LineLine coverage
 1using Elsa.Common;
 2using Elsa.Common.Multitenancy;
 3using Elsa.Workflows.Runtime;
 4using Elsa.Workflows.Runtime.Filters;
 5using Elsa.Workflows.Runtime.Tasks;
 6using Microsoft.Extensions.DependencyInjection;
 7
 8namespace Elsa.Scheduling.StartupTasks;
 9
 10/// <summary>
 11/// Enqueues schedule creation when using the default scheduler, which doesn't have its own persistence layer like Quart
 12/// </summary>
 13[TaskDependency(typeof(PopulateRegistriesStartupTask))]
 7714public class CreateSchedulesStartupTask(IServiceProvider serviceProvider) : IStartupTask
 15{
 16    public async Task ExecuteAsync(CancellationToken cancellationToken)
 17    {
 7718        var workQueue = serviceProvider.GetService<ITenantBackgroundWorkQueue>();
 19
 7720        if (workQueue != null)
 7621            await workQueue.EnqueueAsync(CreateSchedulesAsync, cancellationToken);
 22        else
 123            await CreateSchedulesAsync(serviceProvider, cancellationToken);
 7724    }
 25
 26    private static async Task CreateSchedulesAsync(IServiceProvider serviceProvider, CancellationToken cancellationToken
 27    {
 7728        var triggerStore = serviceProvider.GetRequiredService<ITriggerStore>();
 7729        var bookmarkStore = serviceProvider.GetRequiredService<IBookmarkStore>();
 7730        var triggerScheduler = serviceProvider.GetRequiredService<ITriggerScheduler>();
 7731        var bookmarkScheduler = serviceProvider.GetRequiredService<IBookmarkScheduler>();
 7732        var stimulusNames = new[]
 7733        {
 7734            SchedulingStimulusNames.Cron, SchedulingStimulusNames.Timer, SchedulingStimulusNames.StartAt, SchedulingStim
 7735        };
 7736        var triggerFilter = new TriggerFilter
 7737        {
 7738            Names = stimulusNames
 7739        };
 7740        var bookmarkFilter = new BookmarkFilter
 7741        {
 7742            Names = stimulusNames
 7743        };
 7744        var triggers = (await triggerStore.FindManyAsync(triggerFilter, cancellationToken)).ToList();
 7745        var bookmarks = (await bookmarkStore.FindManyAsync(bookmarkFilter, cancellationToken)).ToList();
 46
 7747        await triggerScheduler.ScheduleAsync(triggers, cancellationToken);
 7748        await bookmarkScheduler.ScheduleAsync(bookmarks, cancellationToken);
 7749    }
 50}