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

@@ -9,7 +9,7 @@ public static class SuggestEndpoints
{
public static void MapSuggestEndpoints(this IEndpointRouteBuilder app)
{
var group = app.MapGroup("/api/suggestions").RequireAuthorization();
var group = app.MapGroup("/api/suggestions").WithTags("Suggestions").RequireAuthorization();
group.MapGet("/mine", async (HttpContext ctx, AppDbContext db, SuggestionWorkflowService service) =>
{
@@ -19,7 +19,7 @@ public static class SuggestEndpoints
var result = await service.GetMineAsync(player.Id);
return result.ToHttpResult(Results.Ok);
});
}).WithName("GetMySuggestions");
group.MapPost("/", async ([FromBody] SuggestionRequest request, HttpContext ctx, AppDbContext db, SuggestionWorkflowService service) =>
{
@@ -42,7 +42,7 @@ public static class SuggestEndpoints
);
return result.ToHttpResult(payload => Results.Created($"/api/suggestions/{payload.Id}", payload));
}).AddEndpointFilter(new PhaseOrJokerFilter());
}).AddEndpointFilter(new PhaseOrJokerFilter()).WithName("CreateSuggestion");
group.MapDelete("/{id:int}", async (int id, HttpContext ctx, AppDbContext db, SuggestionWorkflowService service) =>
{
@@ -52,7 +52,7 @@ public static class SuggestEndpoints
var result = await service.DeleteAsync(player.Id, id);
return result.ToHttpResult(Results.NoContent);
});
}).WithName("DeleteSuggestion");
group.MapPut("/{id:int}", async (int id, [FromBody] SuggestionRequest request, HttpContext ctx, AppDbContext db, SuggestionWorkflowService service) =>
{
@@ -76,7 +76,7 @@ public static class SuggestEndpoints
);
return result.ToHttpResult(Results.Ok);
});
}).WithName("UpdateSuggestion");
group.MapGet("/all", async (HttpContext ctx, AppDbContext db, SuggestionWorkflowService service) =>
{
@@ -86,7 +86,7 @@ public static class SuggestEndpoints
var result = await service.GetAllAsync(player.Id);
return result.ToHttpResult(Results.Ok);
});
}).WithName("GetAllSuggestions");
}
}