Fixed: Filter history by multiple event types
This commit is contained in:
parent
e4b5d559df
commit
489f03441b
|
@ -124,22 +124,20 @@ namespace NzbDrone.Core.History
|
||||||
|
|
||||||
public PagingSpec<EpisodeHistory> GetPaged(PagingSpec<EpisodeHistory> pagingSpec, int[] languages, int[] qualities)
|
public PagingSpec<EpisodeHistory> GetPaged(PagingSpec<EpisodeHistory> pagingSpec, int[] languages, int[] qualities)
|
||||||
{
|
{
|
||||||
pagingSpec.Records = GetPagedRecords(PagedBuilder(pagingSpec, languages, qualities), pagingSpec, PagedQuery);
|
pagingSpec.Records = GetPagedRecords(PagedBuilder(languages, qualities), pagingSpec, PagedQuery);
|
||||||
|
|
||||||
var countTemplate = $"SELECT COUNT(*) FROM (SELECT /**select**/ FROM \"{TableMapping.Mapper.TableNameMapping(typeof(EpisodeHistory))}\" /**join**/ /**innerjoin**/ /**leftjoin**/ /**where**/ /**groupby**/ /**having**/) AS \"Inner\"";
|
var countTemplate = $"SELECT COUNT(*) FROM (SELECT /**select**/ FROM \"{TableMapping.Mapper.TableNameMapping(typeof(EpisodeHistory))}\" /**join**/ /**innerjoin**/ /**leftjoin**/ /**where**/ /**groupby**/ /**having**/) AS \"Inner\"";
|
||||||
pagingSpec.TotalRecords = GetPagedRecordCount(PagedBuilder(pagingSpec, languages, qualities).Select(typeof(EpisodeHistory)), pagingSpec, countTemplate);
|
pagingSpec.TotalRecords = GetPagedRecordCount(PagedBuilder(languages, qualities).Select(typeof(EpisodeHistory)), pagingSpec, countTemplate);
|
||||||
|
|
||||||
return pagingSpec;
|
return pagingSpec;
|
||||||
}
|
}
|
||||||
|
|
||||||
private SqlBuilder PagedBuilder(PagingSpec<EpisodeHistory> pagingSpec, int[] languages, int[] qualities)
|
private SqlBuilder PagedBuilder(int[] languages, int[] qualities)
|
||||||
{
|
{
|
||||||
var builder = Builder()
|
var builder = Builder()
|
||||||
.Join<EpisodeHistory, Series>((h, a) => h.SeriesId == a.Id)
|
.Join<EpisodeHistory, Series>((h, a) => h.SeriesId == a.Id)
|
||||||
.Join<EpisodeHistory, Episode>((h, a) => h.EpisodeId == a.Id);
|
.Join<EpisodeHistory, Episode>((h, a) => h.EpisodeId == a.Id);
|
||||||
|
|
||||||
AddFilters(builder, pagingSpec);
|
|
||||||
|
|
||||||
if (languages is { Length: > 0 })
|
if (languages is { Length: > 0 })
|
||||||
{
|
{
|
||||||
builder.Where($"({BuildLanguageWhereClause(languages)})");
|
builder.Where($"({BuildLanguageWhereClause(languages)})");
|
||||||
|
|
|
@ -62,15 +62,14 @@ namespace Sonarr.Api.V3.History
|
||||||
|
|
||||||
[HttpGet]
|
[HttpGet]
|
||||||
[Produces("application/json")]
|
[Produces("application/json")]
|
||||||
public PagingResource<HistoryResource> GetHistory([FromQuery] PagingRequestResource paging, bool includeSeries, bool includeEpisode, int? eventType, int? episodeId, string downloadId, [FromQuery] int[] seriesIds = null, [FromQuery] int[] languages = null, [FromQuery] int[] quality = null)
|
public PagingResource<HistoryResource> GetHistory([FromQuery] PagingRequestResource paging, bool includeSeries, bool includeEpisode, [FromQuery(Name = "eventType")] int[] eventTypes, int? episodeId, string downloadId, [FromQuery] int[] seriesIds = null, [FromQuery] int[] languages = null, [FromQuery] int[] quality = null)
|
||||||
{
|
{
|
||||||
var pagingResource = new PagingResource<HistoryResource>(paging);
|
var pagingResource = new PagingResource<HistoryResource>(paging);
|
||||||
var pagingSpec = pagingResource.MapToPagingSpec<HistoryResource, EpisodeHistory>("date", SortDirection.Descending);
|
var pagingSpec = pagingResource.MapToPagingSpec<HistoryResource, EpisodeHistory>("date", SortDirection.Descending);
|
||||||
|
|
||||||
if (eventType.HasValue)
|
if (eventTypes != null && eventTypes.Any())
|
||||||
{
|
{
|
||||||
var filterValue = (EpisodeHistoryEventType)eventType.Value;
|
pagingSpec.FilterExpressions.Add(v => eventTypes.Contains((int)v.EventType));
|
||||||
pagingSpec.FilterExpressions.Add(v => v.EventType == filterValue);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (episodeId.HasValue)
|
if (episodeId.HasValue)
|
||||||
|
|
Loading…
Reference in New Issue