ProductsSearch.cs 1.1 KB

1234567891011121314151617181920212223242526272829303132333435
  1. using Domain.Entities.Store.ValueObject;
  2. using Web.Api.Common;
  3. using Application.Abstractions.Messaging;
  4. namespace Web.Api.Endpoints.Store;
  5. /// <summary>상점 — 상품 리스트 (Frontend 사용자). 활성 + 판매 기간 내 상품만 노출.</summary>
  6. internal sealed class ProductsSearch : IEndpoint
  7. {
  8. public void MapEndpoint(IEndpointRouteBuilder app)
  9. {
  10. app.MapGet("api/store/products", async (
  11. int? gameID,
  12. ProductType? type,
  13. string? keyword,
  14. string? sort,
  15. int? page,
  16. ushort? perPage,
  17. ISender sender,
  18. CancellationToken ct
  19. ) => {
  20. var data = await sender.Send(new Application.Features.Api.Store.Products.Search.Query(
  21. gameID,
  22. type,
  23. keyword,
  24. sort,
  25. page is > 0 ? page.Value : 1,
  26. perPage is > 0 ? perPage.Value : (ushort)20
  27. ), ct);
  28. return ApiResponse.Ok(data);
  29. })
  30. .WithTags("Store")
  31. .AllowAnonymous();
  32. }
  33. }