Files
vegasco/src/Vegasco.Server.Api/Cars/DeleteCar.cs
ThompsonNye 7ddc346e88
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
Use full type as log category
2025-07-21 21:41:16 +02:00

45 lines
1.0 KiB
C#

using Microsoft.EntityFrameworkCore;
using System.Diagnostics;
using Vegasco.Server.Api.Persistence;
namespace Vegasco.Server.Api.Cars;
public static class DeleteCar
{
public static RouteHandlerBuilder MapEndpoint(IEndpointRouteBuilder builder)
{
return builder
.MapDelete("cars/{id:guid}", Endpoint)
.WithTags("Cars")
.WithDescription("Deletes a car by ID")
.Produces(204)
.Produces(404);
}
private static async Task<IResult> Endpoint(
Guid id,
ApplicationDbContext dbContext,
ILoggerFactory loggerFactory,
CancellationToken cancellationToken)
{
Activity? activity = Activity.Current;
activity?.SetTag("id", id);
int rows = await dbContext.Cars
.Where(x => x.Id == new CarId(id))
.ExecuteDeleteAsync(cancellationToken);
if (rows == 0)
{
return TypedResults.NotFound();
}
if (rows > 1)
{
ILogger logger = loggerFactory.CreateLogger(typeof(DeleteCar));
logger.LogWarning("Deleted '{DeletedRowCount}' rows for id '{CarId}'", rows, id);
}
return TypedResults.NoContent();
}
}