diff --git a/src/OrchardCore.Modules/OrchardCore.AdminDashboard/Startup.cs b/src/OrchardCore.Modules/OrchardCore.AdminDashboard/Startup.cs index 13855f471e2..498739e7e64 100644 --- a/src/OrchardCore.Modules/OrchardCore.AdminDashboard/Startup.cs +++ b/src/OrchardCore.Modules/OrchardCore.AdminDashboard/Startup.cs @@ -11,11 +11,11 @@ using OrchardCore.AdminDashboard.Services; using OrchardCore.ContentManagement; using OrchardCore.ContentManagement.Display.ContentDisplay; +using OrchardCore.Data; using OrchardCore.Data.Migration; using OrchardCore.Modules; using OrchardCore.Mvc.Core.Utilities; using OrchardCore.Security.Permissions; -using YesSql.Indexes; namespace OrchardCore.AdminDashboard { @@ -35,7 +35,7 @@ public override void ConfigureServices(IServiceCollection services) services.AddScoped(); services.AddScoped(); - services.AddSingleton(); + services.AddIndexProvider(); services.AddContentPart() .UseDisplayDriver(); @@ -60,7 +60,7 @@ public override void Configure(IApplicationBuilder builder, IEndpointRouteBuilde routes.MapAreaControllerRoute( name: "AdminDashboard", areaName: "OrchardCore.AdminDashboard", - pattern: $"{ _adminOptions.AdminUrlPrefix }/dashboard/manage", + pattern: $"{_adminOptions.AdminUrlPrefix}/dashboard/manage", defaults: new { controller = dashboardControllerName, action = nameof(DashboardController.Manage) } ); } diff --git a/src/OrchardCore.Modules/OrchardCore.AuditTrail/Startup.cs b/src/OrchardCore.Modules/OrchardCore.AuditTrail/Startup.cs index 4b61f2a067c..86ef4b35cba 100644 --- a/src/OrchardCore.Modules/OrchardCore.AuditTrail/Startup.cs +++ b/src/OrchardCore.Modules/OrchardCore.AuditTrail/Startup.cs @@ -19,7 +19,6 @@ using OrchardCore.BackgroundTasks; using OrchardCore.Data; using OrchardCore.Data.Migration; -using OrchardCore.DisplayManagement; using OrchardCore.DisplayManagement.Handlers; using OrchardCore.Modules; using OrchardCore.Mvc.Core.Utilities; @@ -28,7 +27,6 @@ using OrchardCore.Settings; using OrchardCore.Settings.Deployment; using YesSql.Filters.Query; -using YesSql.Indexes; namespace OrchardCore.AuditTrail { @@ -56,7 +54,7 @@ public override void ConfigureServices(IServiceCollection services) services.Configure(o => o.Collections.Add(AuditTrailEvent.Collection)); services.AddDataMigration(); - services.AddSingleton(); + services.AddIndexProvider(); services.AddSingleton(); services.AddScoped(); diff --git a/src/OrchardCore.Modules/OrchardCore.ContentFields/Startup.cs b/src/OrchardCore.Modules/OrchardCore.ContentFields/Startup.cs index 129a18e60db..ce3788ede6b 100644 --- a/src/OrchardCore.Modules/OrchardCore.ContentFields/Startup.cs +++ b/src/OrchardCore.Modules/OrchardCore.ContentFields/Startup.cs @@ -203,16 +203,16 @@ public class IndexingStartup : StartupBase public override void ConfigureServices(IServiceCollection services) { services.AddScoped(); - services.AddScoped(); - services.AddScoped(); - services.AddScoped(); - services.AddScoped(); - services.AddScoped(); - services.AddScoped(); - services.AddScoped(); - services.AddScoped(); - services.AddScoped(); - services.AddScoped(); + services.AddScopedIndexProvider(); + services.AddScopedIndexProvider(); + services.AddScopedIndexProvider(); + services.AddScopedIndexProvider(); + services.AddScopedIndexProvider(); + services.AddScopedIndexProvider(); + services.AddScopedIndexProvider(); + services.AddScopedIndexProvider(); + services.AddScopedIndexProvider(); + services.AddScopedIndexProvider(); } } @@ -261,8 +261,8 @@ public class UserPickerSqlIndexingStartup : StartupBase { public override void ConfigureServices(IServiceCollection services) { - services.AddScoped(); - services.AddScoped(); + services.AddScoped(); + services.AddScopedIndexProvider(); } } } diff --git a/src/OrchardCore.Modules/OrchardCore.Deployment/Startup.cs b/src/OrchardCore.Modules/OrchardCore.Deployment/Startup.cs index 5eb9f5809ed..2f7005b43e4 100644 --- a/src/OrchardCore.Modules/OrchardCore.Deployment/Startup.cs +++ b/src/OrchardCore.Modules/OrchardCore.Deployment/Startup.cs @@ -4,6 +4,7 @@ using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Options; using OrchardCore.Admin; +using OrchardCore.Data; using OrchardCore.Data.Migration; using OrchardCore.Deployment.Controllers; using OrchardCore.Deployment.Core; @@ -11,14 +12,12 @@ using OrchardCore.Deployment.Indexes; using OrchardCore.Deployment.Recipes; using OrchardCore.Deployment.Steps; -using OrchardCore.DisplayManagement; using OrchardCore.DisplayManagement.Handlers; using OrchardCore.Modules; using OrchardCore.Mvc.Core.Utilities; using OrchardCore.Navigation; using OrchardCore.Recipes; using OrchardCore.Security.Permissions; -using YesSql.Indexes; namespace OrchardCore.Deployment { @@ -49,7 +48,7 @@ public override void ConfigureServices(IServiceCollection services) services.AddSingleton(new DeploymentStepFactory()); services.AddScoped, RecipeFileDeploymentStepDriver>(); - services.AddSingleton(); + services.AddIndexProvider(); services.AddTransient(); services.AddScoped(); diff --git a/src/OrchardCore.Modules/OrchardCore.Layers/Startup.cs b/src/OrchardCore.Modules/OrchardCore.Layers/Startup.cs index 072473e9bd3..f6a03486bc5 100644 --- a/src/OrchardCore.Modules/OrchardCore.Layers/Startup.cs +++ b/src/OrchardCore.Modules/OrchardCore.Layers/Startup.cs @@ -9,6 +9,7 @@ using OrchardCore.ContentManagement; using OrchardCore.ContentManagement.Display.ContentDisplay; using OrchardCore.ContentManagement.Handlers; +using OrchardCore.Data; using OrchardCore.Data.Migration; using OrchardCore.Deployment; using OrchardCore.DisplayManagement.Handlers; @@ -28,7 +29,6 @@ using OrchardCore.Scripting; using OrchardCore.Security.Permissions; using OrchardCore.Settings; -using YesSql.Indexes; namespace OrchardCore.Layers { @@ -59,7 +59,7 @@ public override void ConfigureServices(IServiceCollection services) services.AddScoped(); services.AddScoped(); services.AddScoped(); - services.AddSingleton(); + services.AddIndexProvider(); services.AddDataMigration(); services.AddScoped(); services.AddRecipeExecutionStep(); diff --git a/src/OrchardCore.Modules/OrchardCore.Lists/Startup.cs b/src/OrchardCore.Modules/OrchardCore.Lists/Startup.cs index 77c0bd07fdd..e5f50f3eb11 100644 --- a/src/OrchardCore.Modules/OrchardCore.Lists/Startup.cs +++ b/src/OrchardCore.Modules/OrchardCore.Lists/Startup.cs @@ -14,6 +14,7 @@ using OrchardCore.Contents.Services; using OrchardCore.Contents.ViewModels; using OrchardCore.ContentTypes.Editors; +using OrchardCore.Data; using OrchardCore.Data.Migration; using OrchardCore.DisplayManagement.Handlers; using OrchardCore.Feeds; @@ -31,7 +32,6 @@ using OrchardCore.Lists.ViewModels; using OrchardCore.Modules; using OrchardCore.Navigation; -using YesSql.Indexes; namespace OrchardCore.Lists { @@ -55,7 +55,7 @@ public override void ConfigureServices(IServiceCollection services) .AddLiquidFilter("list_items") .AddLiquidFilter("container"); - services.AddSingleton(); + services.AddIndexProvider(); services.AddScoped(); services.AddScoped(); services.AddContentPart(); diff --git a/src/OrchardCore.Modules/OrchardCore.Notifications/Startup.cs b/src/OrchardCore.Modules/OrchardCore.Notifications/Startup.cs index e0bcf651620..ccb61e34546 100644 --- a/src/OrchardCore.Modules/OrchardCore.Notifications/Startup.cs +++ b/src/OrchardCore.Modules/OrchardCore.Notifications/Startup.cs @@ -25,7 +25,6 @@ using OrchardCore.Users.Models; using OrchardCore.Workflows.Helpers; using YesSql.Filters.Query; -using YesSql.Indexes; namespace OrchardCore.Notifications; @@ -44,7 +43,7 @@ public override void ConfigureServices(IServiceCollection services) services.AddScoped(); services.AddDataMigration(); - services.AddSingleton(); + services.AddIndexProvider(); services.AddScoped(); services.Configure(o => o.Collections.Add(NotificationConstants.NotificationCollection)); services.AddScoped(); diff --git a/src/OrchardCore.Modules/OrchardCore.Taxonomies/Startup.cs b/src/OrchardCore.Modules/OrchardCore.Taxonomies/Startup.cs index 2c313628242..8bda0e4b874 100644 --- a/src/OrchardCore.Modules/OrchardCore.Taxonomies/Startup.cs +++ b/src/OrchardCore.Modules/OrchardCore.Taxonomies/Startup.cs @@ -82,7 +82,7 @@ public override void ConfigureServices(IServiceCollection services) services.AddScoped(); - services.AddScoped(); + services.AddScopedIndexProvider(); // Terms. services.AddContentPart(); diff --git a/src/OrchardCore.Modules/OrchardCore.Workflows/Startup.cs b/src/OrchardCore.Modules/OrchardCore.Workflows/Startup.cs index cb0b213dadb..7e7734b4412 100644 --- a/src/OrchardCore.Modules/OrchardCore.Workflows/Startup.cs +++ b/src/OrchardCore.Modules/OrchardCore.Workflows/Startup.cs @@ -5,6 +5,7 @@ using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Options; using OrchardCore.Admin; +using OrchardCore.Data; using OrchardCore.Data.Migration; using OrchardCore.Deployment; using OrchardCore.DisplayManagement.Handlers; @@ -27,7 +28,6 @@ using OrchardCore.Workflows.Recipes; using OrchardCore.Workflows.Services; using OrchardCore.Workflows.WorkflowContextProviders; -using YesSql.Indexes; namespace OrchardCore.Workflows { @@ -65,8 +65,8 @@ public override void ConfigureServices(IServiceCollection services) services.AddScoped(); services.AddScoped(); services.AddScoped, MissingActivityDisplayDriver>(); - services.AddSingleton(); - services.AddSingleton(); + services.AddIndexProvider(); + services.AddIndexProvider(); services.AddScoped(); services.AddScoped(); services.AddScoped(); diff --git a/src/OrchardCore/OrchardCore.ContentManagement/ServiceCollectionExtensions.cs b/src/OrchardCore/OrchardCore.ContentManagement/ServiceCollectionExtensions.cs index 7592a377dbd..353e2efda7e 100644 --- a/src/OrchardCore/OrchardCore.ContentManagement/ServiceCollectionExtensions.cs +++ b/src/OrchardCore/OrchardCore.ContentManagement/ServiceCollectionExtensions.cs @@ -4,9 +4,9 @@ using OrchardCore.ContentManagement.Handlers; using OrchardCore.ContentManagement.Metadata; using OrchardCore.ContentManagement.Records; +using OrchardCore.Data; using OrchardCore.Data.Migration; using OrchardCore.Environment.Cache; -using YesSql.Indexes; namespace OrchardCore.ContentManagement { @@ -19,7 +19,7 @@ public static IServiceCollection AddContentManagement(this IServiceCollection se services.TryAddScoped(); services.TryAddScoped(); services.TryAddScoped(); - services.AddSingleton(); + services.AddIndexProvider(); services.AddDataMigration(); services.AddScoped(); services.AddScoped(); diff --git a/src/OrchardCore/OrchardCore.Data.YesSql.Abstractions/IndexServiceCollectionExtensions.cs b/src/OrchardCore/OrchardCore.Data.YesSql.Abstractions/IndexServiceCollectionExtensions.cs new file mode 100644 index 00000000000..06e0f21648d --- /dev/null +++ b/src/OrchardCore/OrchardCore.Data.YesSql.Abstractions/IndexServiceCollectionExtensions.cs @@ -0,0 +1,19 @@ +using Microsoft.Extensions.DependencyInjection; +using YesSql.Indexes; + +namespace OrchardCore.Data; + +public static class IndexServiceCollectionExtensions +{ + public static IServiceCollection AddIndexProvider(this IServiceCollection services) + where TIndexProvider : class, IIndexProvider + { + return services.AddSingleton(); + } + + public static IServiceCollection AddScopedIndexProvider(this IServiceCollection services) + where TScopedIndexProvider : class, IScopedIndexProvider + { + return services.AddScoped(); + } +} diff --git a/src/OrchardCore/OrchardCore.Data.YesSql.Abstractions/ServiceCollectionExtensions.cs b/src/OrchardCore/OrchardCore.Data.YesSql.Abstractions/MigrationServiceCollectionExtensions.cs similarity index 89% rename from src/OrchardCore/OrchardCore.Data.YesSql.Abstractions/ServiceCollectionExtensions.cs rename to src/OrchardCore/OrchardCore.Data.YesSql.Abstractions/MigrationServiceCollectionExtensions.cs index f8da643c050..60a238b02e4 100644 --- a/src/OrchardCore/OrchardCore.Data.YesSql.Abstractions/ServiceCollectionExtensions.cs +++ b/src/OrchardCore/OrchardCore.Data.YesSql.Abstractions/MigrationServiceCollectionExtensions.cs @@ -5,7 +5,7 @@ namespace OrchardCore.Data.Migration; /// /// Provides extension methods for to add YesSql migration . /// -public static class ServiceCollectionExtensions +public static class MigrationServiceCollectionExtensions { public static IServiceCollection AddDataMigration(this IServiceCollection services) where TDataMigration : class, IDataMigration diff --git a/src/OrchardCore/OrchardCore.Users.Core/Extensions/UsersServiceCollectionExtensions.cs b/src/OrchardCore/OrchardCore.Users.Core/Extensions/UsersServiceCollectionExtensions.cs index 9f19d3e2f02..02a046ea160 100644 --- a/src/OrchardCore/OrchardCore.Users.Core/Extensions/UsersServiceCollectionExtensions.cs +++ b/src/OrchardCore/OrchardCore.Users.Core/Extensions/UsersServiceCollectionExtensions.cs @@ -1,5 +1,6 @@ using Microsoft.AspNetCore.Identity; using Microsoft.Extensions.DependencyInjection.Extensions; +using OrchardCore.Data; using OrchardCore.Roles.Services; using OrchardCore.Security; using OrchardCore.Security.Services; @@ -7,7 +8,6 @@ using OrchardCore.Users.Handlers; using OrchardCore.Users.Indexes; using OrchardCore.Users.Services; -using YesSql.Indexes; namespace Microsoft.Extensions.DependencyInjection { @@ -36,10 +36,13 @@ public static IServiceCollection AddUsers(this IServiceCollection services) services.TryAddScoped>(sp => sp.GetRequiredService()); services.TryAddScoped>(sp => sp.GetRequiredService()); - services.AddSingleton(); - services.AddSingleton(); - services.AddSingleton(); - services.AddSingleton(); + services.TryAddScoped>(); + services.TryAddScoped(); + + services.AddIndexProvider(); + services.AddIndexProvider(); + services.AddIndexProvider(); + services.AddIndexProvider(); services.AddScoped(); services.AddScoped, DefaultUserClaimsPrincipalProviderFactory>(); diff --git a/test/OrchardCore.Tests/Apis/GraphQL/ContentItemsFieldTypeTests.cs b/test/OrchardCore.Tests/Apis/GraphQL/ContentItemsFieldTypeTests.cs index 64f81c51c9d..a063e5bd99f 100644 --- a/test/OrchardCore.Tests/Apis/GraphQL/ContentItemsFieldTypeTests.cs +++ b/test/OrchardCore.Tests/Apis/GraphQL/ContentItemsFieldTypeTests.cs @@ -8,6 +8,7 @@ using OrchardCore.ContentManagement.GraphQL.Options; using OrchardCore.ContentManagement.GraphQL.Queries; using OrchardCore.ContentManagement.Records; +using OrchardCore.Data; using OrchardCore.Environment.Shell; using YesSql; using YesSql.Indexes; @@ -195,7 +196,7 @@ public async Task ShouldFilterByAliasIndexRegardlessOfInputFieldCase(string fiel services.Populate(new ServiceCollection()); services.Services.AddScoped(x => _store.CreateSession()); services.Services.AddScoped(x => new ShellSettings()); - services.Services.AddScoped(); + services.Services.AddIndexProvider(); services.Services.AddScoped(); services.Services.AddSingleton>(); services.Build(); @@ -229,8 +230,8 @@ public async Task ShouldBeAbleToUseTheSameIndexForMultipleAliases() services.Populate(new ServiceCollection()); services.Services.AddScoped(x => new ShellSettings()); services.Services.AddScoped(x => _store.CreateSession()); - services.Services.AddScoped(); - services.Services.AddScoped(); + services.Services.AddIndexProvider(); + services.Services.AddIndexProvider(); services.Services.AddScoped(); services.Services.AddSingleton>(); @@ -271,9 +272,9 @@ public async Task ShouldFilterOnMultipleIndexesOnSameAlias() services.Populate(new ServiceCollection()); services.Services.AddScoped(x => new ShellSettings()); services.Services.AddScoped(x => _store.CreateSession()); - services.Services.AddScoped(); - services.Services.AddScoped(); - services.Services.AddScoped(); + services.Services.AddIndexProvider(); + services.Services.AddIndexProvider(); + services.Services.AddIndexProvider(); services.Services.AddScoped(); services.Services.AddSingleton>(); @@ -319,8 +320,8 @@ public async Task ShouldFilterPartsWithoutAPrefixWhenThePartHasNoPrefix() services.Populate(new ServiceCollection()); services.Services.AddScoped(x => _store.CreateSession()); services.Services.AddScoped(x => new ShellSettings()); - services.Services.AddScoped(); - services.Services.AddScoped(); + services.Services.AddIndexProvider(); + services.Services.AddIndexProvider(); services.Services.AddScoped(); services.Services.AddSingleton>(); services.Build(); @@ -354,8 +355,8 @@ public async Task ShouldFilterByCollapsedWhereInputForCollapsedParts() services.Populate(new ServiceCollection()); services.Services.AddScoped(x => new ShellSettings()); services.Services.AddScoped(x => _store.CreateSession()); - services.Services.AddScoped(); - services.Services.AddScoped(); + services.Services.AddIndexProvider(); + services.Services.AddIndexProvider(); services.Services.AddScoped(); services.Services.AddSingleton>(); services.Build();