Refactor TriggerStore methods and update configurations.

Refactored `TriggerStore` to implement pagination and ordering for `FindManyAsync` methods with support for tenant-agnostic filtering. Modified app settings to change database provider to SQL Server and adjusted logging levels to reduce verbosity. Fixed workflow cancellation service to better handle child instances tasks.
This commit is contained in:
Sipke Schoorstra 2025-06-05 09:03:37 +02:00
parent e09f096ef9
commit 3aae05317d
No known key found for this signature in database
GPG key ID: 5C10502B28A4268F
3 changed files with 22 additions and 8 deletions

View file

@ -2,10 +2,9 @@
"Logging": {
"LogLevel": {
"Default": "Information",
"OpenTelemetry": "Debug",
"Microsoft.Hosting.Lifetime": "Information",
"Elsa": "Information",
"Elsa.Workflows.Runtime.Middleware.Workflows.WorkflowHeartbeatMiddleware": "Debug"
"Elsa": "Warning",
"Elsa.Workflows.Runtime.Middleware.Workflows.WorkflowHeartbeatMiddleware": "Warning"
}
},
"HostBuilder": {
@ -26,7 +25,7 @@
"RabbitMq": "amqp://guest:guest@localhost:5672",
"Redis": "localhost:6379,abortConnect=false"
},
"DatabaseProvider": "Sqlite",
"DatabaseProvider": "SqlServer",
"Multitenancy": {
"Tenants": [
{

View file

@ -1,4 +1,6 @@
using Elsa.Common.Entities;
using Elsa.Common.Models;
using Elsa.Extensions;
using Elsa.MongoDb.Common;
using Elsa.Workflows.Runtime;
using Elsa.Workflows.Runtime.Entities;
@ -6,6 +8,7 @@ using Elsa.Workflows.Runtime.Filters;
using Elsa.Workflows.Runtime.OrderDefinitions;
using JetBrains.Annotations;
using MongoDB.Driver.Linq;
using Open.Linq.AsyncExtensions;
namespace Elsa.MongoDb.Modules.Runtime;
@ -37,14 +40,16 @@ public class MongoTriggerStore(MongoDbStore<StoredTrigger> mongoDbStore) : ITrig
return await mongoDbStore.FindManyAsync(query => Filter(query, filter), filter.TenantAgnostic, cancellationToken);
}
public ValueTask<Page<StoredTrigger>> FindManyAsync(TriggerFilter filter, PageArgs pageArgs, CancellationToken cancellationToken = default)
public async ValueTask<Page<StoredTrigger>> FindManyAsync(TriggerFilter filter, PageArgs pageArgs, CancellationToken cancellationToken = default)
{
throw new NotImplementedException();
return await FindManyAsync(filter, pageArgs, new StoredTriggerOrder<string>(x => x.Id, OrderDirection.Ascending), cancellationToken);
}
public async ValueTask<Page<StoredTrigger>> FindManyAsync<TProp>(TriggerFilter filter, PageArgs pageArgs, StoredTriggerOrder<TProp> order, CancellationToken cancellationToken = default)
{
throw new NotImplementedException();
var count = await mongoDbStore.CountAsync(queryable => Filter(queryable, filter), cancellationToken);
var results = await mongoDbStore.FindManyAsync(queryable => Paginate(Order(Filter(queryable, filter), order), pageArgs), cancellationToken).ToList();
return new(results, count);
}
/// <inheritdoc />
@ -73,4 +78,14 @@ public class MongoTriggerStore(MongoDbStore<StoredTrigger> mongoDbStore) : ITrig
{
return filter.Apply(queryable);
}
private IQueryable<StoredTrigger> Order<TOrderBy>(IQueryable<StoredTrigger> queryable, StoredTriggerOrder<TOrderBy> order)
{
return queryable.OrderBy(order);
}
private IQueryable<StoredTrigger> Paginate(IQueryable<StoredTrigger> queryable, PageArgs pageArgs)
{
return queryable.Paginate(pageArgs);
}
}

View file

@ -97,7 +97,7 @@ public class WorkflowCancellationService(
var childInstances = (await workflowInstanceStore.FindManyAsync(filter, cancellationToken)).ToList();
if (childInstances.Any())
tasks.AddRange(CancelWorkflows(childInstances, cancellationToken));
tasks.Add(CancelWorkflows(childInstances, cancellationToken));
}
await Task.WhenAll(tasks);