diff --git a/src/Umbraco.Cms.Api.Management/Controllers/Document/Item/SearchDocumentItemController.cs b/src/Umbraco.Cms.Api.Management/Controllers/Document/Item/SearchDocumentItemController.cs index bd39db19c4..9866ec1691 100644 --- a/src/Umbraco.Cms.Api.Management/Controllers/Document/Item/SearchDocumentItemController.cs +++ b/src/Umbraco.Cms.Api.Management/Controllers/Document/Item/SearchDocumentItemController.cs @@ -12,12 +12,12 @@ namespace Umbraco.Cms.Api.Management.Controllers.Document.Item; [ApiVersion("1.0")] public class SearchDocumentItemController : DocumentItemControllerBase { - private readonly IExamineEntitySearchService _examineEntitySearchService; + private readonly IIndexedEntitySearchService _indexedEntitySearchService; private readonly IDocumentPresentationFactory _documentPresentationFactory; - public SearchDocumentItemController(IExamineEntitySearchService examineEntitySearchService, IDocumentPresentationFactory documentPresentationFactory) + public SearchDocumentItemController(IIndexedEntitySearchService indexedEntitySearchService, IDocumentPresentationFactory documentPresentationFactory) { - _examineEntitySearchService = examineEntitySearchService; + _indexedEntitySearchService = indexedEntitySearchService; _documentPresentationFactory = documentPresentationFactory; } @@ -26,7 +26,7 @@ public class SearchDocumentItemController : DocumentItemControllerBase [ProducesResponseType(typeof(PagedModel), StatusCodes.Status200OK)] public async Task Search(string query, int skip = 0, int take = 100) { - PagedModel searchResult = _examineEntitySearchService.Search(UmbracoObjectTypes.Document, query, skip, take); + PagedModel searchResult = _indexedEntitySearchService.Search(UmbracoObjectTypes.Document, query, skip, take); var result = new PagedModel { Items = searchResult.Items.OfType().Select(_documentPresentationFactory.CreateItemResponseModel), diff --git a/src/Umbraco.Cms.Api.Management/Controllers/Media/Item/SearchMediaItemController.cs b/src/Umbraco.Cms.Api.Management/Controllers/Media/Item/SearchMediaItemController.cs index 67bb4f5c01..07dfd84e5c 100644 --- a/src/Umbraco.Cms.Api.Management/Controllers/Media/Item/SearchMediaItemController.cs +++ b/src/Umbraco.Cms.Api.Management/Controllers/Media/Item/SearchMediaItemController.cs @@ -12,12 +12,12 @@ namespace Umbraco.Cms.Api.Management.Controllers.Media.Item; [ApiVersion("1.0")] public class SearchMediaItemController : MediaItemControllerBase { - private readonly IExamineEntitySearchService _examineEntitySearchService; + private readonly IIndexedEntitySearchService _indexedEntitySearchService; private readonly IMediaPresentationFactory _mediaPresentationFactory; - public SearchMediaItemController(IExamineEntitySearchService examineEntitySearchService, IMediaPresentationFactory mediaPresentationFactory) + public SearchMediaItemController(IIndexedEntitySearchService indexedEntitySearchService, IMediaPresentationFactory mediaPresentationFactory) { - _examineEntitySearchService = examineEntitySearchService; + _indexedEntitySearchService = indexedEntitySearchService; _mediaPresentationFactory = mediaPresentationFactory; } @@ -26,7 +26,7 @@ public class SearchMediaItemController : MediaItemControllerBase [ProducesResponseType(typeof(PagedModel), StatusCodes.Status200OK)] public async Task Search(string query, int skip = 0, int take = 100) { - PagedModel searchResult = _examineEntitySearchService.Search(UmbracoObjectTypes.Media, query, skip, take); + PagedModel searchResult = _indexedEntitySearchService.Search(UmbracoObjectTypes.Media, query, skip, take); var result = new PagedModel { Items = searchResult.Items.OfType().Select(_mediaPresentationFactory.CreateItemResponseModel), diff --git a/src/Umbraco.Cms.Api.Management/Controllers/Member/Item/SearchMemberItemController.cs b/src/Umbraco.Cms.Api.Management/Controllers/Member/Item/SearchMemberItemController.cs index df6a9325f7..2e6eb4f739 100644 --- a/src/Umbraco.Cms.Api.Management/Controllers/Member/Item/SearchMemberItemController.cs +++ b/src/Umbraco.Cms.Api.Management/Controllers/Member/Item/SearchMemberItemController.cs @@ -12,12 +12,12 @@ namespace Umbraco.Cms.Api.Management.Controllers.Member.Item; [ApiVersion("1.0")] public class SearchMemberItemController : MemberItemControllerBase { - private readonly IExamineEntitySearchService _examineEntitySearchService; + private readonly IIndexedEntitySearchService _indexedEntitySearchService; private readonly IMemberPresentationFactory _memberPresentationFactory; - public SearchMemberItemController(IExamineEntitySearchService examineEntitySearchService, IMemberPresentationFactory memberPresentationFactory) + public SearchMemberItemController(IIndexedEntitySearchService indexedEntitySearchService, IMemberPresentationFactory memberPresentationFactory) { - _examineEntitySearchService = examineEntitySearchService; + _indexedEntitySearchService = indexedEntitySearchService; _memberPresentationFactory = memberPresentationFactory; } @@ -26,7 +26,7 @@ public class SearchMemberItemController : MemberItemControllerBase [ProducesResponseType(typeof(PagedModel), StatusCodes.Status200OK)] public async Task Search(string query, int skip = 0, int take = 100) { - PagedModel searchResult = _examineEntitySearchService.Search(UmbracoObjectTypes.Member, query, skip, take); + PagedModel searchResult = _indexedEntitySearchService.Search(UmbracoObjectTypes.Member, query, skip, take); var result = new PagedModel { Items = searchResult.Items.OfType().Select(_memberPresentationFactory.CreateItemResponseModel), diff --git a/src/Umbraco.Core/Services/IEntitySearchService.cs b/src/Umbraco.Core/Services/IEntitySearchService.cs index b10dbbaa4d..1bb7db569a 100644 --- a/src/Umbraco.Core/Services/IEntitySearchService.cs +++ b/src/Umbraco.Core/Services/IEntitySearchService.cs @@ -3,6 +3,9 @@ using Umbraco.Cms.Core.Models.Entities; namespace Umbraco.Cms.Core.Services; +/// +/// Performs entity search directly against the database. +/// public interface IEntitySearchService { PagedModel Search(UmbracoObjectTypes objectType, string query, int skip = 0, int take = 100); diff --git a/src/Umbraco.Core/Services/IExamineEntitySearchService.cs b/src/Umbraco.Core/Services/IExamineEntitySearchService.cs deleted file mode 100644 index 6d2ec5403d..0000000000 --- a/src/Umbraco.Core/Services/IExamineEntitySearchService.cs +++ /dev/null @@ -1,9 +0,0 @@ -using Umbraco.Cms.Core.Models; -using Umbraco.Cms.Core.Models.Entities; - -namespace Umbraco.Cms.Core.Services; - -public interface IExamineEntitySearchService -{ - PagedModel Search(UmbracoObjectTypes objectType, string query, int skip = 0, int take = 100, bool ignoreUserStartNodes = false); -} diff --git a/src/Umbraco.Core/Services/IIndexedEntitySearchService.cs b/src/Umbraco.Core/Services/IIndexedEntitySearchService.cs new file mode 100644 index 0000000000..047f5e7e2f --- /dev/null +++ b/src/Umbraco.Core/Services/IIndexedEntitySearchService.cs @@ -0,0 +1,16 @@ +using Umbraco.Cms.Core.Models; +using Umbraco.Cms.Core.Models.Entities; + +namespace Umbraco.Cms.Core.Services; + +/// +/// Performs entity search against search indexes. +/// +/// +/// Note that this service only supports entity types that are included in search indexes. +/// By default this means documents, media and members. +/// +public interface IIndexedEntitySearchService +{ + PagedModel Search(UmbracoObjectTypes objectType, string query, int skip = 0, int take = 100, bool ignoreUserStartNodes = false); +} diff --git a/src/Umbraco.Infrastructure/DependencyInjection/UmbracoBuilder.Services.cs b/src/Umbraco.Infrastructure/DependencyInjection/UmbracoBuilder.Services.cs index 33149240fb..c3af907799 100644 --- a/src/Umbraco.Infrastructure/DependencyInjection/UmbracoBuilder.Services.cs +++ b/src/Umbraco.Infrastructure/DependencyInjection/UmbracoBuilder.Services.cs @@ -63,7 +63,7 @@ public static partial class UmbracoBuilderExtensions builder.Services.AddUnique(); builder.Services.AddUnique(); builder.Services.AddUnique(); - builder.Services.AddUnique(); + builder.Services.AddUnique(); return builder; } diff --git a/src/Umbraco.Infrastructure/Services/Implement/ExamineEntitySearchService.cs b/src/Umbraco.Infrastructure/Services/Implement/IndexedEntitySearchService.cs similarity index 94% rename from src/Umbraco.Infrastructure/Services/Implement/ExamineEntitySearchService.cs rename to src/Umbraco.Infrastructure/Services/Implement/IndexedEntitySearchService.cs index dbdd6132a8..0055df6244 100644 --- a/src/Umbraco.Infrastructure/Services/Implement/ExamineEntitySearchService.cs +++ b/src/Umbraco.Infrastructure/Services/Implement/IndexedEntitySearchService.cs @@ -8,12 +8,12 @@ using Umbraco.Cms.Infrastructure.Examine; namespace Umbraco.Cms.Infrastructure.Services.Implement; -internal sealed class ExamineEntitySearchService : IExamineEntitySearchService +internal sealed class IndexedEntitySearchService : IIndexedEntitySearchService { private readonly IBackOfficeExamineSearcher _backOfficeExamineSearcher; private readonly IEntityService _entityService; - public ExamineEntitySearchService(IBackOfficeExamineSearcher backOfficeExamineSearcher, IEntityService entityService) + public IndexedEntitySearchService(IBackOfficeExamineSearcher backOfficeExamineSearcher, IEntityService entityService) { _backOfficeExamineSearcher = backOfficeExamineSearcher; _entityService = entityService;