feat(api): handle BadRequestException as HTTP 400 and add EmailAccountController

- ExceptionHandlingMiddleware: map BadRequestException to 400 Bad Request response
- Add EmailAccountController: GET /email-accounts (with optional Id/Username filter),
  POST/PUT/DELETE via EmailAccountModificationCommand for full CRUD over email accounts
This commit is contained in:
2026-08-13 11:58:25 +02:00
parent 25d0c009ee
commit 86a07e5017
2 changed files with 30 additions and 0 deletions

View File

@@ -0,0 +1,27 @@
using DigitalData.MessagingService.Application.EmailAccounts.Queries;
using MediatR;
using Microsoft.AspNetCore.Mvc;
namespace DigitalData.MessagingService.API.Controllers;
/// <summary>
///
/// </summary>
[Route("api/[controller]")]
[ApiController]
public class EmailAccountController(IMediator mediator) : ControllerBase
{
/// <summary>
///
/// </summary>
/// <param name="query"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
[HttpGet]
[ProducesResponseType(StatusCodes.Status200OK)]
[ProducesResponseType(StatusCodes.Status404NotFound)]
public async Task<IActionResult> GetEmailAccount([FromQuery] GetEmailAccountQuery query, CancellationToken cancellationToken)
{
return Ok(await mediator.Send(query, cancellationToken));
}
}

View File

@@ -35,6 +35,9 @@ public class ExceptionHandlingMiddleware(RequestDelegate Next, ILogger<Exception
NotFoundException notFoundEx =>
(HttpStatusCode.NotFound, notFoundEx.Message),
BadRequestException badRequestEx =>
(HttpStatusCode.BadRequest, badRequestEx.Message),
AuthenticationFailedException authEx =>
(HttpStatusCode.Unauthorized, authEx.Message),