Remove unnecessary db roundtrip when deleting an entry

This commit is contained in:
2025-06-19 15:04:09 +02:00
parent 87d81f98e9
commit b6f9b5fb26
2 changed files with 26 additions and 17 deletions

View File

@@ -1,4 +1,5 @@
using Vegasco.Server.Api.Persistence;
using Microsoft.EntityFrameworkCore;
using Vegasco.Server.Api.Persistence;
namespace Vegasco.Server.Api.Cars;
@@ -17,18 +18,21 @@ public static class DeleteCar
public static async Task<IResult> Endpoint(
Guid id,
ApplicationDbContext dbContext,
ILoggerFactory loggerFactory,
CancellationToken cancellationToken)
{
Car? car = await dbContext.Cars.FindAsync([new CarId(id)], cancellationToken: cancellationToken);
var rows = await dbContext.Cars
.Where(x => x.Id == new CarId(id))
.ExecuteDeleteAsync(cancellationToken);
if (car is null)
if (rows > 1)
{
return TypedResults.NotFound();
var logger = loggerFactory.CreateLogger(nameof(DeleteCar));
logger.LogWarning("Deleted '{DeletedRowCount}' rows for id '{CarId}'", rows, id);
}
dbContext.Cars.Remove(car);
await dbContext.SaveChangesAsync(cancellationToken);
return TypedResults.NoContent();
return rows > 0
? TypedResults.NoContent()
: TypedResults.NotFound();
}
}

View File

@@ -1,4 +1,5 @@
using Vegasco.Server.Api.Persistence;
using Microsoft.EntityFrameworkCore;
using Vegasco.Server.Api.Persistence;
namespace Vegasco.Server.Api.Consumptions;
@@ -15,19 +16,23 @@ public static class DeleteConsumption
}
private static async Task<IResult> Endpoint(
ApplicationDbContext dbContext,
Guid id,
ApplicationDbContext dbContext,
ILoggerFactory loggerFactory,
CancellationToken cancellationToken)
{
Consumption? consumption = await dbContext.Consumptions.FindAsync([new ConsumptionId(id)], cancellationToken);
if (consumption is null)
var rows = await dbContext.Consumptions
.Where(x => x.Id == new ConsumptionId(id))
.ExecuteDeleteAsync(cancellationToken);
if (rows > 1)
{
return TypedResults.NotFound();
var logger = loggerFactory.CreateLogger(nameof(DeleteConsumption));
logger.LogWarning("Deleted '{DeletedRowCount}' rows for id '{ConsumptionId}'", rows, id);
}
dbContext.Consumptions.Remove(consumption);
await dbContext.SaveChangesAsync(cancellationToken);
return TypedResults.NoContent();
return rows > 0
? TypedResults.NoContent()
: TypedResults.NotFound();
}
}