26 lines
957 B
C#
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);
|
|
}
|
|
}
|