namespace Musify.Application.Tracks.Responses { /// Result of a combined tracks listing/search: a page of local catalog tracks /// (uploads and previously provisioned YouTube tracks), plus, when a search term was given, /// live YouTube Music hits appended after them. Pagination metadata (, /// , , ) describes only /// the local page — YouTube has no stable total, so its continuation is tracked separately via /// . public record TracksSearchResponse( IReadOnlyList Items, int PageNumber, int PageSize, int PageCount, int TotalItemCount, bool HasPreviousPage, bool HasNextLocalPage, string? NextYoutubeContinuationToken, bool YoutubeUnavailable) { public bool HasNextPage => HasNextLocalPage || !string.IsNullOrEmpty(NextYoutubeContinuationToken); } }