refactor(ReadHistoryQuery): update to not throw exception.
- update controller to throw NotFound if the list is empty
This commit is contained in:
parent
f7c988be9b
commit
dad43de8b1
@ -33,7 +33,7 @@ public static class TaskExtensions
|
||||
/// <param name="factory">Exception provider</param>
|
||||
/// <returns>The awaited collection if it is not <c>null</c> or empty.</returns>
|
||||
/// <exception cref="NotFoundException">Thrown if the result is <c>null</c> or empty.</exception>
|
||||
public static async Task<IEnumerable<T>> ThrowIfNull<T, TException>(this Task<IEnumerable<T>> task, Func<TException> factory) where TException : Exception
|
||||
public static async Task<IEnumerable<T>> ThrowIfEmpty<T, TException>(this Task<IEnumerable<T>> task, Func<TException> factory) where TException : Exception
|
||||
{
|
||||
var result = await task;
|
||||
return result?.Any() ?? false ? result : throw factory();
|
||||
|
||||
@ -16,6 +16,4 @@ public record ReadHistoryQuery(
|
||||
[Required]
|
||||
int EnvelopeId,
|
||||
Constants.EnvelopeStatus? Status = null,
|
||||
bool? OnlyLast = true) : IRequest<IEnumerable<EnvelopeHistoryDto>>
|
||||
{
|
||||
};
|
||||
bool? OnlyLast = true) : IRequest<IEnumerable<EnvelopeHistoryDto>>;
|
||||
@ -42,10 +42,6 @@ public class ReadHistoryQueryHandler : IRequestHandler<ReadHistoryQuery, IEnumer
|
||||
query = query.Where(h => h.Status == request.Status);
|
||||
|
||||
var hists = await query.ToListAsync(cancel);
|
||||
|
||||
if (hists.Count == 0)
|
||||
return _mapper.Map<IEnumerable<EnvelopeHistoryDto>>(hists);
|
||||
|
||||
throw new NotFoundException();
|
||||
}
|
||||
}
|
||||
@ -5,6 +5,8 @@ using Microsoft.AspNetCore.Mvc;
|
||||
using Microsoft.Extensions.Caching.Memory;
|
||||
using static EnvelopeGenerator.Domain.Constants;
|
||||
using EnvelopeGenerator.Application.Histories.Queries;
|
||||
using DigitalData.Core.Client;
|
||||
using EnvelopeGenerator.Application.Extensions;
|
||||
|
||||
namespace EnvelopeGenerator.GeneratorAPI.Controllers;
|
||||
|
||||
@ -107,8 +109,7 @@ public class HistoryController : ControllerBase
|
||||
[Authorize]
|
||||
public async Task<IActionResult> GetAllAsync([FromQuery] ReadHistoryQuery historyQuery)
|
||||
{
|
||||
var history = await _mediator.Send(historyQuery);
|
||||
|
||||
var history = await _mediator.Send(historyQuery).ThrowIfEmpty(Exceptions.NotFound);
|
||||
return Ok((historyQuery.OnlyLast ?? false) ? history.MaxBy(h => h.AddedWhen) : history);
|
||||
}
|
||||
}
|
||||
|
||||
@ -27,7 +27,7 @@ public class TestEnvelopeReceiverController : ControllerBase
|
||||
|
||||
[HttpGet]
|
||||
public async Task<IActionResult> Get([FromQuery] ReadEnvelopeReceiverQuery q, CancellationToken cancel)
|
||||
=> Ok(await _mediator.Send(q, cancel).ThrowIfNull(Exceptions.NotFound));
|
||||
=> Ok(await _mediator.Send(q, cancel).ThrowIfEmpty(Exceptions.NotFound));
|
||||
|
||||
[Obsolete("Use MediatR")]
|
||||
[HttpGet("verify-access-code/{envelope_receiver_id}")]
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user