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 @@ namespace NzbDrone.Api.Blacklist 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 @@ namespace NzbDrone.Api.Blacklist _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 @@ namespace NzbDrone.Api.History { var episodeId = Request.Query.EpisodeId; - var pagingSpec = new PagingSpec - { - 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 @@ namespace NzbDrone.Api.History 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 @@ namespace NzbDrone.Api 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 @@ namespace NzbDrone.Api.Wanted 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 @@ namespace NzbDrone.Api.Wanted return resource; } } -} \ No newline at end of file +} diff --git a/src/NzbDrone.Api/Wanted/MissingModule.cs b/src/NzbDrone.Api/Wanted/MissingModule.cs index 7fb31b000..9f6215a2e 100644 --- a/src/NzbDrone.Api/Wanted/MissingModule.cs +++ b/src/NzbDrone.Api/Wanted/MissingModule.cs @@ -19,13 +19,7 @@ namespace NzbDrone.Api.Wanted private 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 @@ namespace NzbDrone.Api.Wanted return resource; } } -} \ No newline at end of file +} diff --git a/src/NzbDrone.Core.Test/Datastore/PagingSpecExtensionsTests/ToSortDirectionFixture.cs b/src/NzbDrone.Core.Test/Datastore/PagingSpecExtensionsTests/ToSortDirectionFixture.cs index b0eaa64c0..d2cecde84 100644 --- a/src/NzbDrone.Core.Test/Datastore/PagingSpecExtensionsTests/ToSortDirectionFixture.cs +++ b/src/NzbDrone.Core.Test/Datastore/PagingSpecExtensionsTests/ToSortDirectionFixture.cs @@ -8,6 +8,20 @@ namespace NzbDrone.Core.Test.Datastore.PagingSpecExtensionsTests { public class ToSortDirectionFixture { + [Test] + public void should_convert_default_to_asc() + { + var pagingSpec = new PagingSpec + { + 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 @@ namespace NzbDrone.Core.Datastore public enum SortDirection { + Default, Ascending, Descending }