using Application.Features.Api.Ranking.GetHallOfFame; using MediatR; using Web.Api.Common; namespace Web.Api.Endpoints.Ranking; internal sealed class GetHallOfFame : IEndpoint { public void MapEndpoint(IEndpointRouteBuilder app) { app.MapGet("api/ranking/hall-of-fame", async ( int? limit, string? period, ISender sender, CancellationToken ct ) => { var resolvedPeriod = period ?? HallPeriod.All; if (!HallPeriod.ValidPeriods.Contains(resolvedPeriod)) { return ApiResponse.Fail(StatusCodes.Status400BadRequest, "Invalid period"); } var query = new Query(limit ?? 100, resolvedPeriod); var data = await sender.Send(query, ct); return ApiResponse.Ok(data); }) .WithTags("Ranking"); } }