using ErrorOr; using Mediator; using Musify.Application.Contracts; namespace Musify.Application.YouTube { public record SearchYouTubeTracksQuery(string Query, string ContinuationToken) : IQuery>; public class SearchYouTubeTracksQueryHandler(IYouTubeMusicService youTubeMusicService) : IQueryHandler> { public async ValueTask> Handle(SearchYouTubeTracksQuery request, CancellationToken cancellationToken) { if (string.IsNullOrEmpty(request.Query)) return Error.Validation(description: "The search query must not be empty."); return await youTubeMusicService.SearchSongsAsync(request.Query, request.ContinuationToken, cancellationToken); } } }