using System.ComponentModel.DataAnnotations; using ErsatzTV.Controllers.Api.Requests; using ErsatzTV.Core; using ErsatzTV.Extensions; using MediatR; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; namespace ErsatzTV.Controllers.Api; [ApiController] public class MediaItemsController(IMediator mediator) : ControllerBase { [HttpDelete("/api/media-items", Name = "DeleteMediaItems")] [Tags("Media Items")] [EndpointSummary("Delete media items from the database")] [EndpointGroupName("general")] [ProducesResponseType(StatusCodes.Status204NoContent)] [ProducesResponseType(typeof(ProblemDetails), StatusCodes.Status422UnprocessableEntity)] public async Task Delete( [Required] [FromBody] DeleteMediaItemsRequest request, CancellationToken cancellationToken) { if (request.Ids is null || request.Ids.Count == 0) { return BaseError.New("At least one media item id is required").ToErrorResult(); } Either result = await mediator.Send(request.ToCommand(), cancellationToken); return result.ToDeletedResult(); } }