35 lines
1.0 KiB
C#
35 lines
1.0 KiB
C#
using Vegasco.Server.Api.Persistence;
|
|
|
|
namespace Vegasco.Server.Api.Consumptions;
|
|
|
|
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)
|
|
.WithTags("Consumptions")
|
|
.WithDescription("Returns a single consumption entry by ID")
|
|
.Produces<Response>()
|
|
.Produces(404);
|
|
}
|
|
|
|
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);
|
|
}
|
|
} |