namespace Netina.Api.Controllers; public class SearchController : ICarterModule { public void AddRoutes(IEndpointRouteBuilder app) { var group = app.NewVersionedApi("Search").MapGroup("api/search"); group.MapGet("", SearchAsync) .WithDisplayName("Search Async") .HasApiVersion(1.0); group.MapGet("/thumb", SearchThumbAsync) .WithDisplayName("Thumb Search Async") .HasApiVersion(1.0); group.MapGet("zarehbin", ZarehbinAsync) .WithDisplayName("Search Async") .HasApiVersion(1.0); } private async Task SearchThumbAsync([FromQuery] string name, [FromServices] ISearchService searchService, CancellationToken cancellationToken) => TypedResults.Ok(await searchService.ThumbSearchAsync(name, cancellationToken)); private async Task SearchAsync([FromQuery] string name, [FromServices] ISearchService searchService, CancellationToken cancellationToken) => TypedResults.Ok(await searchService.SearchAsync(name, cancellationToken)); private async Task ZarehbinAsync([FromQuery] string? product_id, [FromQuery] int? page, [FromServices] ISearchService searchService, CancellationToken cancellationToken) { if (product_id == null) { if (page == null) return TypedResults.Ok(await searchService.ZarehbinAsync(0, cancellationToken)); else return TypedResults.Ok(await searchService.ZarehbinAsync(page.Value, cancellationToken)); } else return TypedResults.Ok(await searchService.ZarehbinAsync(Guid.Parse(product_id), cancellationToken)); } }