using Microsoft.EntityFrameworkCore; using Vegasco.Server.Api.Persistence; namespace Vegasco.Server.Api.Consumptions; public static class DeleteConsumption { public static RouteHandlerBuilder MapEndpoint(IEndpointRouteBuilder builder) { return builder .MapDelete("consumptions/{id:guid}", Endpoint) .WithTags("Consumptions") .WithDescription("Deletes a consumption entry by ID") .Produces(204) .Produces(404); } private static async Task Endpoint( Guid id, ApplicationDbContext dbContext, ILoggerFactory loggerFactory, CancellationToken cancellationToken) { var rows = await dbContext.Consumptions .Where(x => x.Id == new ConsumptionId(id)) .ExecuteDeleteAsync(cancellationToken); if (rows == 0) { return TypedResults.NotFound(); } if (rows > 1) { var logger = loggerFactory.CreateLogger(nameof(DeleteConsumption)); logger.LogWarning("Deleted '{DeletedRowCount}' rows for id '{ConsumptionId}'", rows, id); } return TypedResults.NoContent(); } }