Files
vegasco/src/Vegasco.Server.Api/Consumptions/GetConsumption.cs

35 lines
1.0 KiB
C#
Raw Normal View History

using Vegasco.Server.Api.Persistence;
2024-08-23 18:02:18 +02:00
namespace Vegasco.Server.Api.Consumptions;
2024-08-23 18:02:18 +02:00
public static class GetConsumption
{
public record Response(Guid Id, DateTimeOffset DateTime, double Distance, double Amount, bool IgnoreInCalculation, Guid CarId);
public static RouteHandlerBuilder MapEndpoint(IEndpointRouteBuilder builder)
{
return builder
.MapGet("consumptions/{id:guid}", Endpoint)
2025-06-16 20:28:37 +02:00
.WithTags("Consumptions")
.WithDescription("Returns a single consumption entry by ID")
2025-06-16 20:28:37 +02:00
.Produces<Response>()
.Produces(404);
2024-08-23 18:02:18 +02:00
}
private static async Task<IResult> Endpoint(
ApplicationDbContext dbContext,
Guid id,
CancellationToken cancellationToken)
{
Consumption? consumption = await dbContext.Consumptions.FindAsync([new ConsumptionId(id)], cancellationToken);
if (consumption is null)
{
return TypedResults.NotFound();
}
var response = new Response(consumption.Id.Value, consumption.DateTime, consumption.Distance,
consumption.Amount, consumption.IgnoreInCalculation, consumption.CarId.Value);
return TypedResults.Ok(response);
}
}