using LiteCharms.Extensions; using LiteCharms.Infrastructure.Database; using LiteCharms.Models; namespace LiteCharms.Features.Products.Queries.Handlers; public class GetProductPricesQueryHandler(IDbContextFactory contextFactory) : IRequestHandler> { public async ValueTask> Handle(GetProductPricesQuery request, CancellationToken cancellationToken) { try { using var context = await contextFactory.CreateDbContextAsync(cancellationToken); var products = await context.ProductPrices.AsNoTracking() .OrderByDescending(o => o.Id) .Take(request.MaxRecords) .ToArrayAsync(cancellationToken); return Result.Ok(products.Select(p => p.ToModel()).ToArray()); } catch (Exception ex) { return Result.Fail(new Error(ex.Message).CausedBy(ex)); } } }