Add OpenAPI contract and generated frontend client

This commit is contained in:
2026-02-18 21:25:07 +01:00
parent e55a1b01f4
commit 1802fd6607
19 changed files with 1509 additions and 126 deletions

View File

@@ -7,7 +7,7 @@ public static class StateEndpoints
{
public static void MapStateEndpoints(this IEndpointRouteBuilder app)
{
var group = app.MapGroup("/api").RequireAuthorization();
var group = app.MapGroup("/api").WithTags("State").RequireAuthorization();
group.MapGet("/state", async (HttpContext ctx, AppDbContext db, StateWorkflowService service, StateChangeNotifier notifier) =>
{
@@ -28,7 +28,7 @@ public static class StateEndpoints
ctx.Response.Headers.ETag = notifier.CurrentEtag;
return Results.Ok(payload);
});
});
}).WithName("GetState");
group.MapGet("/events/state", async (HttpContext ctx, AppDbContext db, StateChangeNotifier notifier) =>
{
@@ -73,7 +73,7 @@ public static class StateEndpoints
}
return Results.Empty;
});
}).WithName("GetStateEvents");
group.MapGet("/me", async (HttpContext ctx, AppDbContext db, StateWorkflowService service) =>
{
@@ -83,7 +83,7 @@ public static class StateEndpoints
var result = await service.GetMeAsync(player);
return result.ToHttpResult(Results.Ok);
});
}).WithName("GetMe");
group.MapPost("/me/phase/next", async (HttpContext ctx, AppDbContext db, StateWorkflowService service) =>
{
@@ -93,7 +93,7 @@ public static class StateEndpoints
var result = await service.NextPhaseAsync(player);
return result.ToHttpResult(Results.Ok);
});
}).WithName("NextPhase");
group.MapPost("/me/phase/prev", async (HttpContext ctx, AppDbContext db, StateWorkflowService service) =>
{
@@ -103,7 +103,7 @@ public static class StateEndpoints
var result = await service.PrevPhaseAsync(player);
return result.ToHttpResult(Results.Ok);
});
}).WithName("PrevPhase");
}