Make it possible to disable Examine indexes by composition (#18988)

This commit is contained in:
Kenn Jacobsen
2025-04-09 18:13:18 +02:00
committed by GitHub
parent 4778501a6e
commit ff58fbd2b1
6 changed files with 54 additions and 4 deletions

View File

@@ -35,9 +35,7 @@ public static partial class UmbracoBuilderExtensions
.AddRecurringBackgroundJobs()
.AddUmbracoHybridCache()
.AddDistributedCache()
.AddCoreNotifications()
.AddExamine()
.AddExamineIndexes();
.AddCoreNotifications();
public static IUmbracoBuilder AddBackOfficeCore(this IUmbracoBuilder builder)
{

View File

@@ -0,0 +1,14 @@
using Umbraco.Cms.Core.Composing;
using Umbraco.Cms.Core.DependencyInjection;
using Umbraco.Cms.Infrastructure.DependencyInjection;
using Umbraco.Cms.Infrastructure.Examine.DependencyInjection;
namespace Umbraco.Cms.Infrastructure.Examine;
public sealed class AddExamineComposer : IComposer
{
public void Compose(IUmbracoBuilder builder)
=> builder
.AddExamine()
.AddExamineIndexes();
}

View File

@@ -186,7 +186,8 @@ public static partial class UmbracoBuilderExtensions
builder.Services.AddTransient<IUserInviteSender, EmailUserInviteSender>();
builder.Services.AddTransient<IUserForgotPasswordSender, EmailUserForgotPasswordSender>();
builder.Services.AddSingleton<IExamineManager, ExamineManager>();
builder.Services.AddSingleton<IExamineManager, NoopExamineManager>();
builder.Services.AddSingleton<IIndexRebuilder, NoopIndexRebuilder>();
builder.Services.AddScoped<ITagQuery, TagQuery>();

View File

@@ -1,3 +1,4 @@
using Examine;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;
using Umbraco.Cms.Core.DeliveryApi;
@@ -21,6 +22,8 @@ public static partial class UmbracoBuilderExtensions
{
public static IUmbracoBuilder AddExamine(this IUmbracoBuilder builder)
{
builder.Services.AddUnique<IExamineManager, ExamineManager>();
// populators are not a collection: one cannot remove ours, and can only add more
// the container can inject IEnumerable<IIndexPopulator> and get them all
builder.Services.AddSingleton<IIndexPopulator, MemberIndexPopulator>();

View File

@@ -0,0 +1,24 @@
using Examine;
namespace Umbraco.Cms.Infrastructure.Examine;
internal sealed class NoopExamineManager : IExamineManager
{
public void Dispose() {}
public bool TryGetIndex(string indexName, out IIndex index)
{
index = null!;
return false;
}
public bool TryGetSearcher(string searcherName, out ISearcher searcher)
{
searcher = null!;
return false;
}
public IEnumerable<IIndex> Indexes => Array.Empty<IIndex>();
public IEnumerable<ISearcher> RegisteredSearchers => Array.Empty<ISearcher>();
}

View File

@@ -0,0 +1,10 @@
namespace Umbraco.Cms.Infrastructure.Examine;
internal sealed class NoopIndexRebuilder : IIndexRebuilder
{
public bool CanRebuild(string indexName) => false;
public void RebuildIndex(string indexName, TimeSpan? delay = null, bool useBackgroundThread = true) {}
public void RebuildIndexes(bool onlyEmptyIndexes, TimeSpan? delay = null, bool useBackgroundThread = true) {}
}