using Netina.Core.CoreServices.CommandQueries.Queries; namespace Netina.Api.Controllers; public class SearchController : ICarterModule { public void AddRoutes(IEndpointRouteBuilder app) { var group = app.NewVersionedApi("Search").MapGroup("api/search"); group.MapGet("/thumb", SearchThumbAsync) .WithDisplayName("Thumb Search Async") .HasApiVersion(1.0); group.MapGet("zarehbin", ZarehbinAsync) .WithDisplayName("Search Async") .HasApiVersion(1.0); group.MapGet("torob", TorobAsync) .WithDisplayName("Get Torob Product Async") .HasApiVersion(1.0); group.MapGet("emalls", EmallsAsync) .WithDisplayName("Get Emalls Product Async") .HasApiVersion(1.0); } private async Task SearchThumbAsync([FromQuery] string name, [FromServices] IMediator mediator, CancellationToken cancellationToken) => TypedResults.Ok(await mediator.Send(new GetThumbSearchProductsQuery(name),cancellationToken)); private async Task ZarehbinAsync([FromQuery] string? product_id, [FromQuery] int? page, [FromServices] IMediator mediator, CancellationToken cancellationToken) => TypedResults.Ok(await mediator.Send(new GetZarehbinProductsQuery(Page: page ?? 0, ProductId: product_id), cancellationToken)); private async Task TorobAsync([FromQuery] int page, [FromServices] IMediator mediator, CancellationToken cancellationToken) => TypedResults.Ok(await mediator.Send(new GetTorobProductsQuery(page),cancellationToken)); private async Task EmallsAsync([FromQuery] int page, [FromQuery]int? item_per_page, [FromServices] IMediator mediator, CancellationToken cancellationToken) => TypedResults.Ok(await mediator.Send(new GetEmallsProductsQuery(page,item_per_page??20), cancellationToken)); }