using AutoMapper;
using DbFirst.Application.Repositories;
using DbFirst.Contracts.Catalogs;
using MediatR;

namespace DbFirst.Application.Catalogs.Queries;

public class GetCatalogByIdHandler : IRequestHandler<GetCatalogByIdQuery, CatalogReadDto?>
{
    private readonly ICatalogRepository _repository;
    private readonly IMapper _mapper;

    public GetCatalogByIdHandler(ICatalogRepository repository, IMapper mapper)
    {
        _repository = repository;
        _mapper = mapper;
    }

    public async Task<CatalogReadDto?> Handle(GetCatalogByIdQuery request, CancellationToken cancellationToken)
    {
        var item = await _repository.GetByIdAsync(request.Id, cancellationToken);
        return item == null ? null : _mapper.Map<CatalogReadDto>(item);
    }
}
