using System.Collections.Generic; using System.ComponentModel; using NzbDrone.Core.Datastore; namespace Lidarr.Http { public class PagingRequestResource { [DefaultValue(1)] public int? Page { get; set; } [DefaultValue(10)] public int? PageSize { get; set; } public string SortKey { get; set; } public SortDirection? SortDirection { get; set; } } public class PagingResource { public int Page { get; set; } public int PageSize { get; set; } public string SortKey { get; set; } public SortDirection SortDirection { get; set; } public int TotalRecords { get; set; } public List Records { get; set; } public PagingResource() { } public PagingResource(PagingRequestResource requestResource) { Page = requestResource.Page ?? 1; PageSize = requestResource.PageSize ?? 10; SortKey = requestResource.SortKey; SortDirection = requestResource.SortDirection ?? SortDirection.Descending; } } public static class PagingResourceMapper { public static PagingSpec MapToPagingSpec(this PagingResource pagingResource, string defaultSortKey = "Id", SortDirection defaultSortDirection = SortDirection.Ascending) { var pagingSpec = new PagingSpec { Page = pagingResource.Page, PageSize = pagingResource.PageSize, SortKey = pagingResource.SortKey, SortDirection = pagingResource.SortDirection, }; if (pagingResource.SortKey == null) { pagingSpec.SortKey = defaultSortKey; if (pagingResource.SortDirection == SortDirection.Default) { pagingSpec.SortDirection = defaultSortDirection; } } return pagingSpec; } } }