From 623b75ed2c29682492ab2c29d56d07d19988d323 Mon Sep 17 00:00:00 2001 From: Sipke Schoorstra Date: Thu, 12 Jun 2025 09:25:43 +0200 Subject: [PATCH] Fix order of Order and Pagination (#6727) * Refactor query composition to ensure consistent ordering and pagination logic. Reordered method calls for `OrderBy` and `Paginate` across multiple stores to enhance readability and maintain consistent execution. Simplified redundant query operations for improved clarity and performance. * Updates Elsa Studio version to 3.4.0 Updates the Elsa Studio version to the stable release. Removes the preview tag from the version number. * Move `ElsaStudioVersion` property to `Directory.Packages.props` for centralized management. --- Directory.Build.props | 3 --- Directory.Packages.props | 3 +++ .../Modules/Management/WorkflowDefinitionStore.cs | 4 ++-- .../Modules/Runtime/BookmarkQueueStore.cs | 6 +++--- .../Modules/Runtime/WorkflowExecutionLogStore.cs | 5 +++-- .../Elsa.Secrets.Management/Services/MemorySecretStore.cs | 4 ++-- .../EFCoreSecretStore.cs | 2 +- 7 files changed, 14 insertions(+), 13 deletions(-) diff --git a/Directory.Build.props b/Directory.Build.props index fddc11126..79b1b1640 100644 --- a/Directory.Build.props +++ b/Directory.Build.props @@ -36,7 +36,4 @@ $(NoWarn);IL2026;IL2046;IL2057;IL2067;IL2070;IL2072;IL2075;IL2087;IL2091 - - 3.4.0-preview.1025 - \ No newline at end of file diff --git a/Directory.Packages.props b/Directory.Packages.props index 21873199a..3758682dd 100644 --- a/Directory.Packages.props +++ b/Directory.Packages.props @@ -3,6 +3,9 @@ true true + + 3.4.0 + diff --git a/src/modules/Elsa.EntityFrameworkCore/Modules/Management/WorkflowDefinitionStore.cs b/src/modules/Elsa.EntityFrameworkCore/Modules/Management/WorkflowDefinitionStore.cs index cc0a459be..f3b7c6996 100644 --- a/src/modules/Elsa.EntityFrameworkCore/Modules/Management/WorkflowDefinitionStore.cs +++ b/src/modules/Elsa.EntityFrameworkCore/Modules/Management/WorkflowDefinitionStore.cs @@ -45,8 +45,8 @@ public class EFCoreWorkflowDefinitionStore(EntityStore public async Task> FindManyAsync(WorkflowDefinitionFilter filter, WorkflowDefinitionOrder order, PageArgs pageArgs, CancellationToken cancellationToken = default) { - var count = await store.QueryAsync(queryable => Filter(queryable, filter).OrderBy(order), cancellationToken).LongCount(); - var results = await store.QueryAsync(queryable => Paginate(Filter(queryable, filter), pageArgs), OnLoadAsync, filter.TenantAgnostic, cancellationToken).ToList(); + var count = await store.QueryAsync(queryable => Filter(queryable, filter), cancellationToken).LongCount(); + var results = await store.QueryAsync(queryable => Filter(queryable, filter).OrderBy(order).Paginate(pageArgs), OnLoadAsync, filter.TenantAgnostic, cancellationToken).ToList(); return new(results, count); } diff --git a/src/modules/Elsa.EntityFrameworkCore/Modules/Runtime/BookmarkQueueStore.cs b/src/modules/Elsa.EntityFrameworkCore/Modules/Runtime/BookmarkQueueStore.cs index 0e7f37812..be232b47b 100644 --- a/src/modules/Elsa.EntityFrameworkCore/Modules/Runtime/BookmarkQueueStore.cs +++ b/src/modules/Elsa.EntityFrameworkCore/Modules/Runtime/BookmarkQueueStore.cs @@ -43,14 +43,14 @@ public class EFBookmarkQueueStore(Store public async Task> PageAsync(PageArgs pageArgs, BookmarkQueueItemOrder orderBy, CancellationToken cancellationToken = default) { - var count = await store.QueryAsync(queryable => queryable.OrderBy(orderBy), cancellationToken).LongCount(); - var results = await store.QueryAsync(queryable => queryable.Paginate(pageArgs), OnLoadAsync, cancellationToken).ToList(); + var count = await store.QueryAsync(queryable => queryable, cancellationToken).LongCount(); + var results = await store.QueryAsync(queryable => queryable.OrderBy(orderBy).Paginate(pageArgs), OnLoadAsync, cancellationToken).ToList(); return new(results, count); } public async Task> PageAsync(PageArgs pageArgs, BookmarkQueueFilter filter, BookmarkQueueItemOrder orderBy, CancellationToken cancellationToken = default) { - var count = await store.QueryAsync(queryable => filter.Apply(queryable).OrderBy(orderBy), cancellationToken).LongCount(); + var count = await store.QueryAsync(filter.Apply, cancellationToken).LongCount(); var results = await store.QueryAsync(queryable => filter.Apply(queryable).OrderBy(orderBy).Paginate(pageArgs), OnLoadAsync, cancellationToken).ToList(); return new(results, count); } diff --git a/src/modules/Elsa.EntityFrameworkCore/Modules/Runtime/WorkflowExecutionLogStore.cs b/src/modules/Elsa.EntityFrameworkCore/Modules/Runtime/WorkflowExecutionLogStore.cs index 03b9088cb..2569f479e 100644 --- a/src/modules/Elsa.EntityFrameworkCore/Modules/Runtime/WorkflowExecutionLogStore.cs +++ b/src/modules/Elsa.EntityFrameworkCore/Modules/Runtime/WorkflowExecutionLogStore.cs @@ -61,7 +61,7 @@ public class EFCoreWorkflowExecutionLogStore(EntityStore> FindManyAsync(WorkflowExecutionLogRecordFilter filter, PageArgs pageArgs, WorkflowExecutionLogRecordOrder order, CancellationToken cancellationToken = default) { var count = await store.QueryAsync(queryable => Filter(queryable, filter), cancellationToken).LongCount(); - var results = await store.QueryAsync(queryable => Filter(queryable, filter).Paginate(pageArgs).OrderBy(order), OnLoadAsync, cancellationToken).ToList(); + var results = await store.QueryAsync(queryable => Filter(queryable, filter).OrderBy(order).Paginate(pageArgs), OnLoadAsync, cancellationToken).ToList(); return new(results, count); } @@ -71,10 +71,11 @@ public class EFCoreWorkflowExecutionLogStore(EntityStore Filter(queryable, filter), cancellationToken); } - private async ValueTask OnSaveAsync(RuntimeElsaDbContext dbContext, WorkflowExecutionLogRecord entity, CancellationToken cancellationToken) + private ValueTask OnSaveAsync(RuntimeElsaDbContext dbContext, WorkflowExecutionLogRecord entity, CancellationToken cancellationToken) { entity = entity.SanitizeLogMessage(); dbContext.Entry(entity).Property("SerializedPayload").CurrentValue = ShouldSerializePayload(entity) ? safeSerializer.Serialize(entity.Payload) : null; + return ValueTask.CompletedTask; } private async ValueTask OnLoadAsync(RuntimeElsaDbContext dbContext, WorkflowExecutionLogRecord? entity, CancellationToken cancellationToken) diff --git a/src/modules/Elsa.Secrets.Management/Services/MemorySecretStore.cs b/src/modules/Elsa.Secrets.Management/Services/MemorySecretStore.cs index 30440998f..d30b3d692 100644 --- a/src/modules/Elsa.Secrets.Management/Services/MemorySecretStore.cs +++ b/src/modules/Elsa.Secrets.Management/Services/MemorySecretStore.cs @@ -10,8 +10,8 @@ public class MemorySecretStore(MemoryStore memoryStore) : ISecretStore { public Task> FindManyAsync(SecretFilter filter, SecretOrder order, PageArgs pageArgs, CancellationToken cancellationToken = default) { - var count = memoryStore.Query(query => Filter(query, filter).OrderBy(order)).LongCount(); - var result = memoryStore.Query(query => Filter(query, filter).Paginate(pageArgs)).ToList(); + var count = memoryStore.Query(query => Filter(query, filter)).LongCount(); + var result = memoryStore.Query(query => Filter(query, filter).OrderBy(order).Paginate(pageArgs)).ToList(); return Task.FromResult(Page.Of(result, count)); } diff --git a/src/modules/Elsa.Secrets.Persistence.EntityFrameworkCore/EFCoreSecretStore.cs b/src/modules/Elsa.Secrets.Persistence.EntityFrameworkCore/EFCoreSecretStore.cs index 8dcebdc8c..87ae79004 100644 --- a/src/modules/Elsa.Secrets.Persistence.EntityFrameworkCore/EFCoreSecretStore.cs +++ b/src/modules/Elsa.Secrets.Persistence.EntityFrameworkCore/EFCoreSecretStore.cs @@ -16,7 +16,7 @@ public class EFCoreSecretStore(EntityStore store) : IS public async Task> FindManyAsync(SecretFilter filter, SecretOrder order, PageArgs pageArgs, CancellationToken cancellationToken = default) { var count = await store.QueryAsync(query => Filter(query, filter), cancellationToken).LongCount(); - var secrets = await store.QueryAsync(query => Filter(query, filter).Paginate(pageArgs).OrderBy(order), cancellationToken).ToList(); + var secrets = await store.QueryAsync(query => Filter(query, filter).OrderBy(order).Paginate(pageArgs), cancellationToken).ToList(); return new(secrets, count); }