diff --git a/src/NzbDrone.Api/Blacklist/BlacklistModule.cs b/src/NzbDrone.Api/Blacklist/BlacklistModule.cs index 7799612a7..910892cf7 100644 --- a/src/NzbDrone.Api/Blacklist/BlacklistModule.cs +++ b/src/NzbDrone.Api/Blacklist/BlacklistModule.cs @@ -17,13 +17,7 @@ public BlacklistModule(IBlacklistService blacklistService) private PagingResource GetBlacklist(PagingResource pagingResource) { - var pagingSpec = new PagingSpec - { - Page = pagingResource.Page, - PageSize = pagingResource.PageSize, - SortKey = pagingResource.SortKey, - SortDirection = pagingResource.SortDirection - }; + var pagingSpec = pagingResource.MapToPagingSpec("id", SortDirection.Ascending); return ApplyToPage(_blacklistService.Paged, pagingSpec, BlacklistResourceMapper.MapToResource); } @@ -33,4 +27,4 @@ private void DeleteBlacklist(int id) _blacklistService.Delete(id); } } -} \ No newline at end of file +} diff --git a/src/NzbDrone.Api/History/HistoryModule.cs b/src/NzbDrone.Api/History/HistoryModule.cs index bf59cbdb0..d85cf74d8 100644 --- a/src/NzbDrone.Api/History/HistoryModule.cs +++ b/src/NzbDrone.Api/History/HistoryModule.cs @@ -47,13 +47,7 @@ private PagingResource GetHistory(PagingResource - { - Page = pagingResource.Page, - PageSize = pagingResource.PageSize, - SortKey = pagingResource.SortKey, - SortDirection = pagingResource.SortDirection - }; + var pagingSpec = pagingResource.MapToPagingSpec("date", SortDirection.Descending); if (pagingResource.FilterKey == "eventType") { @@ -77,4 +71,4 @@ private Response MarkAsFailed() return new object().AsResponse(); } } -} \ No newline at end of file +} diff --git a/src/NzbDrone.Api/PagingResource.cs b/src/NzbDrone.Api/PagingResource.cs index 50bbff8ab..b8025efc4 100644 --- a/src/NzbDrone.Api/PagingResource.cs +++ b/src/NzbDrone.Api/PagingResource.cs @@ -17,15 +17,26 @@ public class PagingResource public static class PagingResourceMapper { - public static PagingSpec MapToPagingSpec(this PagingResource pagingSpec) + public static PagingSpec MapToPagingSpec(this PagingResource pagingResource, string defaultSortKey = "Id", SortDirection defaultSortDirection = SortDirection.Ascending) { - return new PagingSpec + var pagingSpec = new PagingSpec { - Page = pagingSpec.Page, - PageSize = pagingSpec.PageSize, - SortKey = pagingSpec.SortKey, - SortDirection = pagingSpec.SortDirection, + 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; } } } diff --git a/src/NzbDrone.Api/Wanted/CutoffModule.cs b/src/NzbDrone.Api/Wanted/CutoffModule.cs index 13725e2bb..d2d08edab 100644 --- a/src/NzbDrone.Api/Wanted/CutoffModule.cs +++ b/src/NzbDrone.Api/Wanted/CutoffModule.cs @@ -23,13 +23,7 @@ public CutoffModule(IEpisodeCutoffService episodeCutoffService, private PagingResource GetCutoffUnmetEpisodes(PagingResource pagingResource) { - var pagingSpec = new PagingSpec - { - Page = pagingResource.Page, - PageSize = pagingResource.PageSize, - SortKey = pagingResource.SortKey, - SortDirection = pagingResource.SortDirection - }; + var pagingSpec = pagingResource.MapToPagingSpec("airDateUtc", SortDirection.Descending); if (pagingResource.FilterKey == "monitored" && pagingResource.FilterValue == "false") { @@ -45,4 +39,4 @@ private PagingResource GetCutoffUnmetEpisodes(PagingResource GetMissingEpisodes(PagingResource pagingResource) { - var pagingSpec = new PagingSpec - { - Page = pagingResource.Page, - PageSize = pagingResource.PageSize, - SortKey = pagingResource.SortKey, - SortDirection = pagingResource.SortDirection - }; + var pagingSpec = pagingResource.MapToPagingSpec("airDateUtc", SortDirection.Descending); if (pagingResource.FilterKey == "monitored" && pagingResource.FilterValue == "false") { @@ -41,4 +35,4 @@ private PagingResource GetMissingEpisodes(PagingResource + { + Page = 1, + PageSize = 10, + SortDirection = SortDirection.Default, + SortKey = "AirDate" + }; + + pagingSpec.ToSortDirection().Should().Be(Marr.Data.QGen.SortDirection.Asc); + } + [Test] public void should_convert_ascending_to_asc() { diff --git a/src/NzbDrone.Core/Datastore/PagingSpec.cs b/src/NzbDrone.Core/Datastore/PagingSpec.cs index 37bd9776c..63f8d719c 100644 --- a/src/NzbDrone.Core/Datastore/PagingSpec.cs +++ b/src/NzbDrone.Core/Datastore/PagingSpec.cs @@ -17,6 +17,7 @@ public class PagingSpec public enum SortDirection { + Default, Ascending, Descending }