43 lines
1.7 KiB
C#
43 lines
1.7 KiB
C#
using Netina.Core.CoreServices.Abstracts;
|
|
|
|
namespace Netina.Api.Controller;
|
|
|
|
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<IResult> SearchThumbAsync([FromQuery] string name, [FromServices] ISearchService searchService, CancellationToken cancellationToken)
|
|
=> TypedResults.Ok(await searchService.ThumbSearchAsync(name, cancellationToken));
|
|
|
|
|
|
private async Task<IResult> SearchAsync([FromQuery] string name, [FromServices] ISearchService searchService, CancellationToken cancellationToken)
|
|
=> TypedResults.Ok(await searchService.SearchAsync(name, cancellationToken));
|
|
|
|
private async Task<IResult> 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));
|
|
}
|
|
} |