< Summary

Information
Class: Elsa.Workflows.Runtime.DefaultBookmarkQueuePurger
Assembly: Elsa.Workflows.Runtime
File(s): /home/runner/work/elsa-core/elsa-core/src/modules/Elsa.Workflows.Runtime/Services/DefaultBookmarkQueuePurger.cs
Line coverage
64%
Covered lines: 16
Uncovered lines: 9
Coverable lines: 25
Total lines: 51
Line coverage: 64%
Branch coverage
50%
Covered branches: 1
Total branches: 2
Branch coverage: 50%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
.ctor(...)100%11100%
PurgeAsync()50%2265.21%

File(s)

/home/runner/work/elsa-core/elsa-core/src/modules/Elsa.Workflows.Runtime/Services/DefaultBookmarkQueuePurger.cs

#LineLine coverage
 1using Elsa.Common;
 2using Elsa.Common.Entities;
 3using Elsa.Common.Models;
 4using Elsa.Workflows.Runtime.Filters;
 5using Elsa.Workflows.Runtime.Options;
 6using Elsa.Workflows.Runtime.OrderDefinitions;
 7using JetBrains.Annotations;
 8using Microsoft.Extensions.Logging;
 9using Microsoft.Extensions.Options;
 10
 11namespace Elsa.Workflows.Runtime;
 12
 13[UsedImplicitly]
 3214public class DefaultBookmarkQueuePurger(IBookmarkQueueStore store, ISystemClock systemClock, IOptions<BookmarkQueuePurge
 15{
 16    public async Task PurgeAsync(CancellationToken cancellationToken = default)
 17    {
 8818        var currentPage = 0;
 8819        var now = systemClock.UtcNow;
 8820        var thresholdDate = now - options.Value.Ttl;
 21
 8822        logger.LogDebug("Purging bookmark queue items older than {ThresholdDate}.", thresholdDate);
 23
 024        while (true)
 25        {
 8826            var pageArgs = PageArgs.FromPage(currentPage, options.Value.BatchSize);
 8827            var filter = new BookmarkQueueFilter
 8828            {
 8829                CreatedAtLessThan = thresholdDate
 8830            };
 8831            var order = new BookmarkQueueItemOrder<DateTimeOffset>(x => x.CreatedAt, OrderDirection.Ascending);
 8832            var page = await store.PageAsync(pageArgs, filter, order, cancellationToken);
 8833            var items = page.Items;
 34
 8835            if (items.Count == 0)
 36                break;
 37
 038            var ids = items.Select(x => x.Id).ToList();
 039            await store.DeleteAsync(new BookmarkQueueFilter
 040            {
 041                Ids = ids
 042            }, cancellationToken);
 43
 044            logger.LogInformation("Purged {Count} bookmark queue items.", items.Count);
 45
 046            currentPage++;
 047        }
 48
 8849        logger.LogDebug("Finished purging bookmark queue items.");
 8850    }
 51}