V14: Fixup webhook endpoints (#16143)

* Use presentation factory, as there is no map definition

* Refactor to actually get entities by key
This commit is contained in:
Nikolaj Geisle
2024-04-24 15:41:32 +02:00
committed by GitHub
parent ed64dbf3e4
commit fc9b47a2ea
2 changed files with 7 additions and 9 deletions

View File

@@ -2,8 +2,8 @@ using Asp.Versioning;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using Umbraco.Cms.Api.Common.ViewModels.Pagination;
using Umbraco.Cms.Api.Management.Factories;
using Umbraco.Cms.Api.Management.ViewModels.Webhook;
using Umbraco.Cms.Core.Mapping;
using Umbraco.Cms.Core.Models;
using Umbraco.Cms.Core.Services;
@@ -13,12 +13,12 @@ namespace Umbraco.Cms.Api.Management.Controllers.Webhook;
public class AllWebhookController : WebhookControllerBase
{
private readonly IWebhookService _webhookService;
private readonly IUmbracoMapper _umbracoMapper;
private readonly IWebhookPresentationFactory _webhookPresentationFactory;
public AllWebhookController(IWebhookService webhookService, IUmbracoMapper umbracoMapper)
public AllWebhookController(IWebhookService webhookService, IWebhookPresentationFactory webhookPresentationFactory)
{
_webhookService = webhookService;
_umbracoMapper = umbracoMapper;
_webhookPresentationFactory = webhookPresentationFactory;
}
[HttpGet]
@@ -34,7 +34,7 @@ public class AllWebhookController : WebhookControllerBase
var viewModel = new PagedViewModel<WebhookResponseModel>
{
Total = result.Total,
Items = _umbracoMapper.MapEnumerable<IWebhook, WebhookResponseModel>(webhooks)
Items = webhooks.Select(x => _webhookPresentationFactory.CreateResponseModel(x)),
};
return Ok(viewModel);

View File

@@ -61,11 +61,9 @@ public class WebhookRepository : IWebhookRepository
public async Task<PagedModel<IWebhook>> GetByIdsAsync(IEnumerable<Guid> keys)
{
Sql<ISqlContext>? sql = _scopeAccessor.AmbientScope?.Database.SqlContext.Sql()
.SelectAll()
.Select<WebhookDto>()
.From<WebhookDto>()
.InnerJoin<Webhook2EventsDto>()
.On<WebhookDto, Webhook2EventsDto>(left => left.Id, right => right.WebhookId)
.WhereIn<Webhook2EventsDto>(x => x.WebhookId, keys);
.WhereIn<WebhookDto>(x => x.Key, keys);
List<WebhookDto>? webhookDtos = await _scopeAccessor.AmbientScope?.Database.FetchAsync<WebhookDto>(sql)!;