Skip to content

Commit 713e109

Browse files
committed
Fixed api blacklist, history, wanted/missing and wanted/cutoff requiring sortKey, now defaulting to an appropriate value (airDateUtc/date desc for most).
fixes Sonarr#1452
1 parent 4bf3ef4 commit 713e109

File tree

7 files changed

+40
-38
lines changed

7 files changed

+40
-38
lines changed

src/NzbDrone.Api/Blacklist/BlacklistModule.cs

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -17,13 +17,7 @@ public BlacklistModule(IBlacklistService blacklistService)
1717

1818
private PagingResource<BlacklistResource> GetBlacklist(PagingResource<BlacklistResource> pagingResource)
1919
{
20-
var pagingSpec = new PagingSpec<Core.Blacklisting.Blacklist>
21-
{
22-
Page = pagingResource.Page,
23-
PageSize = pagingResource.PageSize,
24-
SortKey = pagingResource.SortKey,
25-
SortDirection = pagingResource.SortDirection
26-
};
20+
var pagingSpec = pagingResource.MapToPagingSpec<BlacklistResource, Core.Blacklisting.Blacklist>("id", SortDirection.Ascending);
2721

2822
return ApplyToPage(_blacklistService.Paged, pagingSpec, BlacklistResourceMapper.MapToResource);
2923
}
@@ -33,4 +27,4 @@ private void DeleteBlacklist(int id)
3327
_blacklistService.Delete(id);
3428
}
3529
}
36-
}
30+
}

src/NzbDrone.Api/History/HistoryModule.cs

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -47,13 +47,7 @@ private PagingResource<HistoryResource> GetHistory(PagingResource<HistoryResourc
4747
{
4848
var episodeId = Request.Query.EpisodeId;
4949

50-
var pagingSpec = new PagingSpec<Core.History.History>
51-
{
52-
Page = pagingResource.Page,
53-
PageSize = pagingResource.PageSize,
54-
SortKey = pagingResource.SortKey,
55-
SortDirection = pagingResource.SortDirection
56-
};
50+
var pagingSpec = pagingResource.MapToPagingSpec<HistoryResource, Core.History.History>("date", SortDirection.Descending);
5751

5852
if (pagingResource.FilterKey == "eventType")
5953
{
@@ -77,4 +71,4 @@ private Response MarkAsFailed()
7771
return new object().AsResponse();
7872
}
7973
}
80-
}
74+
}

src/NzbDrone.Api/PagingResource.cs

Lines changed: 17 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -17,15 +17,26 @@ public class PagingResource<TResource>
1717

1818
public static class PagingResourceMapper
1919
{
20-
public static PagingSpec<TModel> MapToPagingSpec<TResource, TModel>(this PagingResource<TResource> pagingSpec)
20+
public static PagingSpec<TModel> MapToPagingSpec<TResource, TModel>(this PagingResource<TResource> pagingResource, string defaultSortKey = "Id", SortDirection defaultSortDirection = SortDirection.Ascending)
2121
{
22-
return new PagingSpec<TModel>
22+
var pagingSpec = new PagingSpec<TModel>
2323
{
24-
Page = pagingSpec.Page,
25-
PageSize = pagingSpec.PageSize,
26-
SortKey = pagingSpec.SortKey,
27-
SortDirection = pagingSpec.SortDirection,
24+
Page = pagingResource.Page,
25+
PageSize = pagingResource.PageSize,
26+
SortKey = pagingResource.SortKey,
27+
SortDirection = pagingResource.SortDirection,
2828
};
29+
30+
if (pagingResource.SortKey == null)
31+
{
32+
pagingSpec.SortKey = defaultSortKey;
33+
if(pagingResource.SortDirection == SortDirection.Default)
34+
{
35+
pagingSpec.SortDirection = defaultSortDirection;
36+
}
37+
}
38+
39+
return pagingSpec;
2940
}
3041
}
3142
}

src/NzbDrone.Api/Wanted/CutoffModule.cs

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -23,13 +23,7 @@ public CutoffModule(IEpisodeCutoffService episodeCutoffService,
2323

2424
private PagingResource<EpisodeResource> GetCutoffUnmetEpisodes(PagingResource<EpisodeResource> pagingResource)
2525
{
26-
var pagingSpec = new PagingSpec<Episode>
27-
{
28-
Page = pagingResource.Page,
29-
PageSize = pagingResource.PageSize,
30-
SortKey = pagingResource.SortKey,
31-
SortDirection = pagingResource.SortDirection
32-
};
26+
var pagingSpec = pagingResource.MapToPagingSpec<EpisodeResource, Episode>("airDateUtc", SortDirection.Descending);
3327

3428
if (pagingResource.FilterKey == "monitored" && pagingResource.FilterValue == "false")
3529
{
@@ -45,4 +39,4 @@ private PagingResource<EpisodeResource> GetCutoffUnmetEpisodes(PagingResource<Ep
4539
return resource;
4640
}
4741
}
48-
}
42+
}

src/NzbDrone.Api/Wanted/MissingModule.cs

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -19,13 +19,7 @@ public MissingModule(IEpisodeService episodeService,
1919

2020
private PagingResource<EpisodeResource> GetMissingEpisodes(PagingResource<EpisodeResource> pagingResource)
2121
{
22-
var pagingSpec = new PagingSpec<Episode>
23-
{
24-
Page = pagingResource.Page,
25-
PageSize = pagingResource.PageSize,
26-
SortKey = pagingResource.SortKey,
27-
SortDirection = pagingResource.SortDirection
28-
};
22+
var pagingSpec = pagingResource.MapToPagingSpec<EpisodeResource, Episode>("airDateUtc", SortDirection.Descending);
2923

3024
if (pagingResource.FilterKey == "monitored" && pagingResource.FilterValue == "false")
3125
{
@@ -41,4 +35,4 @@ private PagingResource<EpisodeResource> GetMissingEpisodes(PagingResource<Episod
4135
return resource;
4236
}
4337
}
44-
}
38+
}

src/NzbDrone.Core.Test/Datastore/PagingSpecExtensionsTests/ToSortDirectionFixture.cs

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,20 @@ namespace NzbDrone.Core.Test.Datastore.PagingSpecExtensionsTests
88
{
99
public class ToSortDirectionFixture
1010
{
11+
[Test]
12+
public void should_convert_default_to_asc()
13+
{
14+
var pagingSpec = new PagingSpec<Episode>
15+
{
16+
Page = 1,
17+
PageSize = 10,
18+
SortDirection = SortDirection.Default,
19+
SortKey = "AirDate"
20+
};
21+
22+
pagingSpec.ToSortDirection().Should().Be(Marr.Data.QGen.SortDirection.Asc);
23+
}
24+
1125
[Test]
1226
public void should_convert_ascending_to_asc()
1327
{

src/NzbDrone.Core/Datastore/PagingSpec.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ public class PagingSpec<TModel>
1717

1818
public enum SortDirection
1919
{
20+
Default,
2021
Ascending,
2122
Descending
2223
}

0 commit comments

Comments
 (0)