feat: extend discount product gRPC API with sort_by and sale_count
Build and Deploy to Kubernetes / build-and-deploy (push) Successful in 7m11s

- Add sort_by (StringValue) to GetDiscountProductsRequest proto to enable dynamic sorting
- Add sale_count (int32) to DiscountProductDto proto for top-seller exposure
- Update GetDiscountProductsQuery with SortBy property
- Update GetDiscountProductsQueryHandler to use ApplyOrder(SortBy) with fallback to Created desc; project SaleCount in SELECT
- Add SortBy and SaleCount Mapster mappings in DiscountProductProfile
- Bump CMSMicroservice.Protobuf version to 0.0.196

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
masoodafar-web
2026-05-13 19:47:56 +03:30
parent 98c2875ae2
commit 683ed370b5
5 changed files with 14 additions and 4 deletions
@@ -23,6 +23,8 @@ public class DiscountProductProfile : IRegister
src => src.MinPrice != null ? (int?)src.MinPrice.Value : null)
.Map(dest => dest.MaxPrice,
src => src.MaxPrice != null ? (int?)src.MaxPrice.Value : null)
.Map(dest => dest.SortBy,
src => string.IsNullOrEmpty(src.SortBy) ? null : src.SortBy)
.Map(dest => dest.PaginationQuery, src => new PaginationState
{
PageNumber = src.PageNumber > 0 ? src.PageNumber : 1,
@@ -64,6 +66,7 @@ public class DiscountProductProfile : IRegister
ThumbnailPath = p.ThumbnailPath ?? string.Empty,
RemainingCount = p.RemainingCount,
ViewCount = p.ViewCount,
SaleCount = p.SaleCount,
IsActive = p.IsActive,
Created = Timestamp.FromDateTime(DateTime.UtcNow)
});