* Add entity search endpoints (to be replaced with Examine based ones for content, media and member) * Update OpenApi.json
40 lines
1.5 KiB
C#
40 lines
1.5 KiB
C#
using Asp.Versioning;
|
|
using Microsoft.AspNetCore.Http;
|
|
using Microsoft.AspNetCore.Mvc;
|
|
using Umbraco.Cms.Api.Management.Factories;
|
|
using Umbraco.Cms.Api.Management.ViewModels.Media.Item;
|
|
using Umbraco.Cms.Core.Models;
|
|
using Umbraco.Cms.Core.Models.Entities;
|
|
using Umbraco.Cms.Core.Services;
|
|
|
|
namespace Umbraco.Cms.Api.Management.Controllers.Media.Item;
|
|
|
|
[ApiVersion("1.0")]
|
|
public class SearchMediaItemController : MediaItemControllerBase
|
|
{
|
|
private readonly IEntitySearchService _entitySearchService;
|
|
private readonly IMediaPresentationFactory _mediaPresentationFactory;
|
|
|
|
public SearchMediaItemController(IEntitySearchService entitySearchService, IMediaPresentationFactory mediaPresentationFactory)
|
|
{
|
|
_entitySearchService = entitySearchService;
|
|
_mediaPresentationFactory = mediaPresentationFactory;
|
|
}
|
|
|
|
[HttpGet("search")]
|
|
[MapToApiVersion("1.0")]
|
|
[ProducesResponseType(typeof(PagedModel<MediaItemResponseModel>), StatusCodes.Status200OK)]
|
|
public async Task<ActionResult> Search(string query, int skip = 0, int take = 100)
|
|
{
|
|
// FIXME: use Examine and handle user start nodes
|
|
PagedModel<IEntitySlim> searchResult = _entitySearchService.Search(UmbracoObjectTypes.Media, query, skip, take);
|
|
var result = new PagedModel<MediaItemResponseModel>
|
|
{
|
|
Items = searchResult.Items.OfType<IMediaEntitySlim>().Select(_mediaPresentationFactory.CreateItemResponseModel),
|
|
Total = searchResult.Total
|
|
};
|
|
|
|
return await Task.FromResult(Ok(result));
|
|
}
|
|
}
|