From 7edfe188a7f88d4b4df7ea97eb925684faadbff3 Mon Sep 17 00:00:00 2001 From: Sipke Schoorstra Date: Fri, 25 Oct 2024 22:38:41 +0200 Subject: [PATCH] Update packages (#6058) * Update dependencies and refactor MongoDB usages to IQueryable Updated MongoDB-related methods to use IQueryable instead of IMongoQueryable for better compatibility and cleaner code. Additionally, upgraded several dependencies and packages to newer versions, ensuring enhanced security and performance. * Remove TargetFramework from MongoDb project file The TargetFramework property has been removed from Elsa.MongoDb.csproj. This change is likely to allow for a more flexible build configuration or to delegate framework specification to a higher-level configuration. * Update package versions in _build.csproj Upgraded Azure.Identity to 1.13.1, NuGet.Packaging to 6.11.1, and Microsoft.Identity.Client to 4.66.1. These updates address vulnerabilities and ensure compatibility with dependencies. --- Directory.Packages.props | 138 +++++++++--------- build/_build.csproj | 6 +- .../Elsa.MongoDb/Common/MongoDbStore.cs | 36 ++--- src/modules/Elsa.MongoDb/Elsa.MongoDb.csproj | 33 +++-- .../Extensions/QueryableExtensions.cs | 3 +- .../Elsa.MongoDb/Features/MongoDbFeature.cs | 19 +-- .../Modules/Alterations/AlterationJobStore.cs | 5 +- .../Alterations/AlterationPlanStore.cs | 4 +- .../Modules/Identity/ApplicationStore.cs | 4 +- .../Modules/Identity/RoleStore.cs | 4 +- .../Modules/Identity/UserStore.cs | 4 +- .../Elsa.MongoDb/Modules/Labels/LabelStore.cs | 4 +- .../Management/WorkflowDefinitionStore.cs | 20 +-- .../Management/WorkflowInstanceStore.cs | 18 +-- .../Runtime/ActivityExecutionLogStore.cs | 12 +- .../Modules/Runtime/BookmarkQueueStore.cs | 12 +- .../Modules/Runtime/BookmarkStore.cs | 4 +- .../Modules/Runtime/KeyValueStore.cs | 4 +- .../Modules/Runtime/TriggerStore.cs | 4 +- .../Runtime/WorkflowExecutionLogStore.cs | 12 +- 20 files changed, 173 insertions(+), 173 deletions(-) diff --git a/Directory.Packages.props b/Directory.Packages.props index d3e0f5472..938266c0a 100644 --- a/Directory.Packages.props +++ b/Directory.Packages.props @@ -6,14 +6,14 @@ - - - - - + + + + + - - + + @@ -22,96 +22,94 @@ - - - - - - - - - - - - - - + + + + + + + + + + + + + + - + - - + + - - - + + + - - - - - - + + + + + + - - + + - - - + + + - - - + + + - - - - - - - - - - - - + + + + + + + + + + + + - - - - + - + - - - - + + + + - + - + - + + @@ -141,12 +139,14 @@ - + - + + + @@ -183,6 +183,8 @@ - + + + \ No newline at end of file diff --git a/build/_build.csproj b/build/_build.csproj index 4617e6f76..cdb02ddd5 100644 --- a/build/_build.csproj +++ b/build/_build.csproj @@ -24,11 +24,11 @@ - - + + - + diff --git a/src/modules/Elsa.MongoDb/Common/MongoDbStore.cs b/src/modules/Elsa.MongoDb/Common/MongoDbStore.cs index 12ae9e437..296f0bd14 100644 --- a/src/modules/Elsa.MongoDb/Common/MongoDbStore.cs +++ b/src/modules/Elsa.MongoDb/Common/MongoDbStore.cs @@ -164,7 +164,7 @@ public class MongoDbStore(IMongoCollection collection, ITe /// The query to use /// The cancellation token /// The document if found, otherwise null - public async Task FindAsync(Func, IMongoQueryable> query, CancellationToken cancellationToken = default) + public async Task FindAsync(Func, IQueryable> query, CancellationToken cancellationToken = default) { return await FindAsync(query, false, cancellationToken); } @@ -176,7 +176,7 @@ public class MongoDbStore(IMongoCollection collection, ITe /// Whether to include results across tenants /// The cancellation token /// The document if found, otherwise null - public async Task FindAsync(Func, IMongoQueryable> query, bool tenantAgnostic = false, CancellationToken cancellationToken = default) + public async Task FindAsync(Func, IQueryable> query, bool tenantAgnostic = false, CancellationToken cancellationToken = default) { var queryable = GetQueryableCollection(tenantAgnostic); return await query(queryable).FirstOrDefaultAsync(cancellationToken); @@ -202,7 +202,7 @@ public class MongoDbStore(IMongoCollection collection, ITe /// /// Queries the database using a query and a selector. /// - public async Task> FindManyAsync(Func, IMongoQueryable> query, Expression> selector, CancellationToken cancellationToken = default) + public async Task> FindManyAsync(Func, IQueryable> query, Expression> selector, CancellationToken cancellationToken = default) { return await FindManyAsync(query, selector, false, cancellationToken); } @@ -210,7 +210,7 @@ public class MongoDbStore(IMongoCollection collection, ITe /// /// Queries the database using a query and a selector. /// - public async Task> FindManyAsync(Func, IMongoQueryable> query, Expression> selector, bool tenantAgnostic = false, CancellationToken cancellationToken = default) + public async Task> FindManyAsync(Func, IQueryable> query, Expression> selector, bool tenantAgnostic = false, CancellationToken cancellationToken = default) { var queryable = GetQueryableCollection(tenantAgnostic); return await query(queryable).Select(selector).ToListAsync(cancellationToken); @@ -219,7 +219,7 @@ public class MongoDbStore(IMongoCollection collection, ITe /// /// Finds a list of documents using a query /// - public async Task> FindManyAsync(Func, IMongoQueryable> query, CancellationToken cancellationToken = default) + public async Task> FindManyAsync(Func, IQueryable> query, CancellationToken cancellationToken = default) { return await FindManyAsync(query, false, cancellationToken); } @@ -227,7 +227,7 @@ public class MongoDbStore(IMongoCollection collection, ITe /// /// Finds a list of documents using a query /// - public async Task> FindManyAsync(Func, IMongoQueryable> query, bool tenantAgnostic = false, CancellationToken cancellationToken = default) + public async Task> FindManyAsync(Func, IQueryable> query, bool tenantAgnostic = false, CancellationToken cancellationToken = default) { var queryable = GetQueryableCollection(tenantAgnostic); return await query(queryable).ToListAsync(cancellationToken); @@ -236,7 +236,7 @@ public class MongoDbStore(IMongoCollection collection, ITe /// /// Queries the database using a query and a selector. /// - public async Task> FindMany(Func, IMongoQueryable> query, Expression> selector, CancellationToken cancellationToken = default) + public async Task> FindMany(Func, IQueryable> query, Expression> selector, CancellationToken cancellationToken = default) { return await FindMany(query, selector, false, cancellationToken); } @@ -244,7 +244,7 @@ public class MongoDbStore(IMongoCollection collection, ITe /// /// Queries the database using a query and a selector. /// - public async Task> FindMany(Func, IMongoQueryable> query, Expression> selector, bool tenantAgnostic = false, CancellationToken cancellationToken = default) + public async Task> FindMany(Func, IQueryable> query, Expression> selector, bool tenantAgnostic = false, CancellationToken cancellationToken = default) { var queryable = GetQueryableCollection(tenantAgnostic); return await query(queryable).Select(selector).ToListAsync(cancellationToken); @@ -253,7 +253,7 @@ public class MongoDbStore(IMongoCollection collection, ITe /// /// Counts documents in the collection using a filter. /// - public async Task CountAsync(Func, IMongoQueryable> query, CancellationToken cancellationToken = default) + public async Task CountAsync(Func, IQueryable> query, CancellationToken cancellationToken = default) { return await CountAsync(query, false, cancellationToken); } @@ -261,7 +261,7 @@ public class MongoDbStore(IMongoCollection collection, ITe /// /// Counts documents in the collection using a filter. /// - public async Task CountAsync(Func, IMongoQueryable> query, bool tenantAgnostic = false, CancellationToken cancellationToken = default) + public async Task CountAsync(Func, IQueryable> query, bool tenantAgnostic = false, CancellationToken cancellationToken = default) { var queryable = GetQueryableCollection(tenantAgnostic); return await query(queryable).LongCountAsync(cancellationToken); @@ -270,7 +270,7 @@ public class MongoDbStore(IMongoCollection collection, ITe /// /// Counts documents in the collection using a filter and distinct by a key selector. /// - public async Task CountAsync(Func, IMongoQueryable> query, Expression> propertySelector, CancellationToken cancellationToken = default) + public async Task CountAsync(Func, IQueryable> query, Expression> propertySelector, CancellationToken cancellationToken = default) { return await CountAsync(query, propertySelector, false, cancellationToken); } @@ -278,10 +278,10 @@ public class MongoDbStore(IMongoCollection collection, ITe /// /// Counts documents in the collection using a filter and distinct by a key selector. /// - public async Task CountAsync(Func, IMongoQueryable> query, Expression> propertySelector, bool tenantAgnostic = false, CancellationToken cancellationToken = default) + public async Task CountAsync(Func, IQueryable> query, Expression> propertySelector, bool tenantAgnostic = false, CancellationToken cancellationToken = default) { var queryable = GetQueryableCollection(tenantAgnostic); - return await query((IMongoQueryable)queryable.DistinctBy(propertySelector)).LongCountAsync(cancellationToken); + return await query((IQueryable)queryable.DistinctBy(propertySelector)).LongCountAsync(cancellationToken); } /// @@ -347,7 +347,7 @@ public class MongoDbStore(IMongoCollection collection, ITe /// Deletes documents using a query. /// /// The number of documents deleted. - public async Task DeleteWhereAsync(Func, IMongoQueryable> query, Expression> keySelector, CancellationToken cancellationToken = default) + public async Task DeleteWhereAsync(Func, IQueryable> query, Expression> keySelector, CancellationToken cancellationToken = default) { return await DeleteWhereAsync(query, keySelector, false, cancellationToken); } @@ -356,7 +356,7 @@ public class MongoDbStore(IMongoCollection collection, ITe /// Deletes documents using a query. /// /// The number of documents deleted. - public async Task DeleteWhereAsync(Func, IMongoQueryable> query, Expression> keySelector, bool tenantAgnostic = false, CancellationToken cancellationToken = default) + public async Task DeleteWhereAsync(Func, IQueryable> query, Expression> keySelector, bool tenantAgnostic = false, CancellationToken cancellationToken = default) { var key = keySelector.GetPropertyName(); return await DeleteWhereAsync(query, key, tenantAgnostic, cancellationToken); @@ -366,7 +366,7 @@ public class MongoDbStore(IMongoCollection collection, ITe /// Deletes documents using a query. /// /// The number of documents deleted. - public async Task DeleteWhereAsync(Func, IMongoQueryable> query, string key = nameof(Entity.Id), CancellationToken cancellationToken = default) + public async Task DeleteWhereAsync(Func, IQueryable> query, string key = nameof(Entity.Id), CancellationToken cancellationToken = default) { return await DeleteWhereAsync(query, key, false, cancellationToken); } @@ -375,7 +375,7 @@ public class MongoDbStore(IMongoCollection collection, ITe /// Deletes documents using a query. /// /// The number of documents deleted. - public async Task DeleteWhereAsync(Func, IMongoQueryable> query, string key = nameof(Entity.Id), bool tenantAgnostic = false, CancellationToken cancellationToken = default) + public async Task DeleteWhereAsync(Func, IQueryable> query, string key = nameof(Entity.Id), bool tenantAgnostic = false, CancellationToken cancellationToken = default) { var queryable = GetQueryableCollection(tenantAgnostic); var documentsToDelete = await query(queryable).ToListAsync(cancellationToken); @@ -386,7 +386,7 @@ public class MongoDbStore(IMongoCollection collection, ITe return count; } - private IMongoQueryable GetQueryableCollection(bool tenantAgnostic = false) + private IQueryable GetQueryableCollection(bool tenantAgnostic = false) { var queryable = collection.AsQueryable(); diff --git a/src/modules/Elsa.MongoDb/Elsa.MongoDb.csproj b/src/modules/Elsa.MongoDb/Elsa.MongoDb.csproj index 2a84690bf..d19673d26 100644 --- a/src/modules/Elsa.MongoDb/Elsa.MongoDb.csproj +++ b/src/modules/Elsa.MongoDb/Elsa.MongoDb.csproj @@ -8,27 +8,30 @@ - - - - + + + + - + - + - - - - - - - - - + + + + + + + + + diff --git a/src/modules/Elsa.MongoDb/Extensions/QueryableExtensions.cs b/src/modules/Elsa.MongoDb/Extensions/QueryableExtensions.cs index f48e5b83a..316d27fd6 100644 --- a/src/modules/Elsa.MongoDb/Extensions/QueryableExtensions.cs +++ b/src/modules/Elsa.MongoDb/Extensions/QueryableExtensions.cs @@ -1,5 +1,4 @@ using Elsa.Common.Models; -using MongoDB.Driver; using MongoDB.Driver.Linq; namespace Elsa.MongoDb.Extensions; @@ -9,7 +8,7 @@ public static class QueryableExtensions /// /// Returns a paged result from the specified query. /// - public static async Task> PaginateAsync(this IMongoQueryable queryable, PageArgs? pageArgs = default) + public static async Task> PaginateAsync(this IQueryable queryable, PageArgs? pageArgs = default) { var count = await queryable.CountAsync(); if (pageArgs?.Offset != null) queryable = queryable.Skip(pageArgs.Offset.Value); diff --git a/src/modules/Elsa.MongoDb/Features/MongoDbFeature.cs b/src/modules/Elsa.MongoDb/Features/MongoDbFeature.cs index a4408e13c..09c7afba3 100644 --- a/src/modules/Elsa.MongoDb/Features/MongoDbFeature.cs +++ b/src/modules/Elsa.MongoDb/Features/MongoDbFeature.cs @@ -9,7 +9,6 @@ using Elsa.MongoDb.Options; using Elsa.MongoDb.Serializers; using Elsa.Workflows.Memory; using Elsa.Workflows.Runtime.Entities; -using Elsa.Workflows.Services; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.DependencyInjection.Extensions; using Microsoft.Extensions.Options; @@ -17,20 +16,14 @@ using MongoDB.Bson; using MongoDB.Bson.Serialization; using MongoDB.Bson.Serialization.Serializers; using MongoDB.Driver; -using MongoDB.Driver.Core.Extensions.DiagnosticSources; namespace Elsa.MongoDb.Features; /// /// Configures MongoDb. /// -public class MongoDbFeature : FeatureBase +public class MongoDbFeature(IModule module) : FeatureBase(module) { - /// - public MongoDbFeature(IModule module) : base(module) - { - } - /// /// The MongoDB connection string. /// @@ -104,7 +97,9 @@ public class MongoDbFeature : FeatureBase var settings = MongoClientSettings.FromUrl(mongoUrl); - settings.ClusterConfigurator = cb => cb.Subscribe(new DiagnosticsActivityEventSubscriber()); + // TODO: Uncomment once https://github.com/jbogard/MongoDB.Driver.Core.Extensions.DiagnosticSources/pull/41 is merged and deployed. + //settings.ClusterConfigurator = cb => cb.Subscribe(new DiagnosticsActivityEventSubscriber()); + settings.ApplicationName = GetApplicationName(settings); settings.WriteConcern = options.WriteConcern; settings.ReadConcern = options.ReadConcern; @@ -122,6 +117,8 @@ public class MongoDbFeature : FeatureBase return client.GetDatabase(mongoUrl.DatabaseName); } - private static string GetApplicationName(MongoClientSettings settings) => - string.IsNullOrWhiteSpace(settings.ApplicationName) ? "elsa_workflows" : settings.ApplicationName; + private static string GetApplicationName(MongoClientSettings settings) + { + return string.IsNullOrWhiteSpace(settings.ApplicationName) ? "elsa_workflows" : settings.ApplicationName; + } } \ No newline at end of file diff --git a/src/modules/Elsa.MongoDb/Modules/Alterations/AlterationJobStore.cs b/src/modules/Elsa.MongoDb/Modules/Alterations/AlterationJobStore.cs index ba609c4cb..342328e29 100644 --- a/src/modules/Elsa.MongoDb/Modules/Alterations/AlterationJobStore.cs +++ b/src/modules/Elsa.MongoDb/Modules/Alterations/AlterationJobStore.cs @@ -57,7 +57,6 @@ public class MongoAlterationJobStore : IAlterationJobStore { await _mongoDbStore.SaveManyAsync(jobs.Select(i => i), cancellationToken); } - - private static IMongoQueryable Filter(IMongoQueryable queryable, AlterationJobFilter filter) => - (filter.Apply(queryable) as IMongoQueryable)!; + + private static IQueryable Filter(IQueryable queryable, AlterationJobFilter filter) => filter.Apply(queryable); } \ No newline at end of file diff --git a/src/modules/Elsa.MongoDb/Modules/Alterations/AlterationPlanStore.cs b/src/modules/Elsa.MongoDb/Modules/Alterations/AlterationPlanStore.cs index a0ddb98af..ca9ad4217 100644 --- a/src/modules/Elsa.MongoDb/Modules/Alterations/AlterationPlanStore.cs +++ b/src/modules/Elsa.MongoDb/Modules/Alterations/AlterationPlanStore.cs @@ -51,9 +51,9 @@ public class MongoAlterationPlanStore : IAlterationPlanStore await _mongoDbStore.SaveAsync(document, cancellationToken); } - private static IMongoQueryable Filter(IMongoQueryable queryable, AlterationPlanFilter filter) + private static IQueryable Filter(IQueryable queryable, AlterationPlanFilter filter) { - return (Apply(queryable, filter) as IMongoQueryable)!; + return Apply(queryable, filter); } private static IQueryable Apply(IQueryable queryable, AlterationPlanFilter filter) diff --git a/src/modules/Elsa.MongoDb/Modules/Identity/ApplicationStore.cs b/src/modules/Elsa.MongoDb/Modules/Identity/ApplicationStore.cs index 8baa38cd5..c5ac2d0fb 100644 --- a/src/modules/Elsa.MongoDb/Modules/Identity/ApplicationStore.cs +++ b/src/modules/Elsa.MongoDb/Modules/Identity/ApplicationStore.cs @@ -31,8 +31,8 @@ public class MongoApplicationStore(MongoDbStore applicationMongoDbS return applicationMongoDbStore.FindAsync(query => Filter(query, filter), cancellationToken); } - private static IMongoQueryable Filter(IQueryable query, ApplicationFilter filter) + private static IQueryable Filter(IQueryable query, ApplicationFilter filter) { - return (filter.Apply(query) as IMongoQueryable)!; + return filter.Apply(query); } } \ No newline at end of file diff --git a/src/modules/Elsa.MongoDb/Modules/Identity/RoleStore.cs b/src/modules/Elsa.MongoDb/Modules/Identity/RoleStore.cs index ec3eedfb3..56c4cd48b 100644 --- a/src/modules/Elsa.MongoDb/Modules/Identity/RoleStore.cs +++ b/src/modules/Elsa.MongoDb/Modules/Identity/RoleStore.cs @@ -43,8 +43,8 @@ public class MongoRoleStore(MongoDbStore roleMongoDbStore) : IRoleStore return roleMongoDbStore.FindManyAsync(queryable => Filter(queryable, filter), cancellationToken); } - private static IMongoQueryable Filter(IQueryable query, RoleFilter filter) + private static IQueryable Filter(IQueryable query, RoleFilter filter) { - return (filter.Apply(query) as IMongoQueryable)!; + return filter.Apply(query); } } \ No newline at end of file diff --git a/src/modules/Elsa.MongoDb/Modules/Identity/UserStore.cs b/src/modules/Elsa.MongoDb/Modules/Identity/UserStore.cs index 6346b1438..e3880720f 100644 --- a/src/modules/Elsa.MongoDb/Modules/Identity/UserStore.cs +++ b/src/modules/Elsa.MongoDb/Modules/Identity/UserStore.cs @@ -29,8 +29,8 @@ public class MongoUserStore(MongoDbStore userMongoDbStore) : IUserStore return userMongoDbStore.FindAsync(query => Filter(query, filter), cancellationToken); } - private static IMongoQueryable Filter(IQueryable query, UserFilter filter) + private static IQueryable Filter(IQueryable query, UserFilter filter) { - return (filter.Apply(query) as IMongoQueryable)!; + return filter.Apply(query); } } \ No newline at end of file diff --git a/src/modules/Elsa.MongoDb/Modules/Labels/LabelStore.cs b/src/modules/Elsa.MongoDb/Modules/Labels/LabelStore.cs index 7e4a38adc..31bf6d4f0 100644 --- a/src/modules/Elsa.MongoDb/Modules/Labels/LabelStore.cs +++ b/src/modules/Elsa.MongoDb/Modules/Labels/LabelStore.cs @@ -80,8 +80,8 @@ public class MongoLabelStore : ILabelStore return await _labelMongoDbStore.DeleteWhereAsync(x => idList.Contains(x.Id), cancellationToken); } - private static IMongoQueryable