using LiteCqrs; using TeleWave.Application.Common.Interfaces; using TeleWave.Application.Common.Models; namespace TeleWave.Application.Metadata.SearchShows; public sealed class SearchShowMetadataQueryHandler(IMetadataProviderResolver resolver) : IQueryHandler>> { public async Task>> Handle( SearchShowMetadataQuery query, CancellationToken cancellationToken ) { var provider = resolver.Resolve(query.Provider); if (provider is null) return Result.Failure>(MetadataErrors.ProviderNotAvailable); if (string.IsNullOrWhiteSpace(query.Query)) return Result.Success>([]); var results = await provider.SearchShowsAsync(query.Query, cancellationToken); return Result.Success(results); } }