From 489f03441bafaea242a6425c36eefd95c38e62bb Mon Sep 17 00:00:00 2001 From: Bogdan Date: Tue, 16 Jan 2024 07:54:27 +0200 Subject: [PATCH] Fixed: Filter history by multiple event types --- src/NzbDrone.Core/History/HistoryRepository.cs | 8 +++----- src/Sonarr.Api.V3/History/HistoryController.cs | 7 +++---- 2 files changed, 6 insertions(+), 9 deletions(-) diff --git a/src/NzbDrone.Core/History/HistoryRepository.cs b/src/NzbDrone.Core/History/HistoryRepository.cs index 7f3da4064..e51ef5eed 100644 --- a/src/NzbDrone.Core/History/HistoryRepository.cs +++ b/src/NzbDrone.Core/History/HistoryRepository.cs @@ -124,22 +124,20 @@ namespace NzbDrone.Core.History public PagingSpec GetPaged(PagingSpec 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\""; - 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; } - private SqlBuilder PagedBuilder(PagingSpec pagingSpec, int[] languages, int[] qualities) + private SqlBuilder PagedBuilder(int[] languages, int[] qualities) { var builder = Builder() .Join((h, a) => h.SeriesId == a.Id) .Join((h, a) => h.EpisodeId == a.Id); - AddFilters(builder, pagingSpec); - if (languages is { Length: > 0 }) { builder.Where($"({BuildLanguageWhereClause(languages)})"); diff --git a/src/Sonarr.Api.V3/History/HistoryController.cs b/src/Sonarr.Api.V3/History/HistoryController.cs index 991b2bb21..02eae491a 100644 --- a/src/Sonarr.Api.V3/History/HistoryController.cs +++ b/src/Sonarr.Api.V3/History/HistoryController.cs @@ -62,15 +62,14 @@ namespace Sonarr.Api.V3.History [HttpGet] [Produces("application/json")] - public PagingResource 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 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(paging); var pagingSpec = pagingResource.MapToPagingSpec("date", SortDirection.Descending); - if (eventType.HasValue) + if (eventTypes != null && eventTypes.Any()) { - var filterValue = (EpisodeHistoryEventType)eventType.Value; - pagingSpec.FilterExpressions.Add(v => v.EventType == filterValue); + pagingSpec.FilterExpressions.Add(v => eventTypes.Contains((int)v.EventType)); } if (episodeId.HasValue)