using LiteCharms.Extensions; using LiteCharms.Features.Shop.CartPackages.Models; using LiteCharms.Features.Shop.Postgres; namespace LiteCharms.Features.CartPackages.Queries.Handlers; public class GetPackageQueryHandler(IDbContextFactory contextFactory) : IRequestHandler> { public async ValueTask> Handle(GetPackageQuery request, CancellationToken cancellationToken) { try { using var context = await contextFactory.CreateDbContextAsync(cancellationToken); var package = await context.Packages.FirstOrDefaultAsync(p => p.Id == request.PackageId, cancellationToken); return package is not null ? Result.Ok(package.ToModel()) : Result.Fail($"Failed to find package by ID {request.PackageId}"); } catch (Exception ex) { return Result.Fail(new Error(ex.Message).CausedBy(ex)); } } }