Files
TeleWave/backend/src/TeleWave.Application/Metadata/SearchShows/SearchShowMetadataQueryHandler.cs
T

26 lines
957 B
C#

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