From c24db3bf9aa247a6506380a45bcfd353aaec0a80 Mon Sep 17 00:00:00 2001 From: Stevie Robinson Date: Sun, 5 May 2024 09:45:34 +0200 Subject: [PATCH] move filtering of protocols to controller --- .../Blocklisting/BlocklistRepository.cs | 27 +++---------------- .../Blocklisting/BlocklistService.cs | 6 ++--- .../Blocklist/BlocklistController.cs | 9 +++++-- 3 files changed, 14 insertions(+), 28 deletions(-) diff --git a/src/NzbDrone.Core/Blocklisting/BlocklistRepository.cs b/src/NzbDrone.Core/Blocklisting/BlocklistRepository.cs index 11c8243b1..c2cde2871 100644 --- a/src/NzbDrone.Core/Blocklisting/BlocklistRepository.cs +++ b/src/NzbDrone.Core/Blocklisting/BlocklistRepository.cs @@ -1,6 +1,5 @@ using System.Collections.Generic; using NzbDrone.Core.Datastore; -using NzbDrone.Core.Indexers; using NzbDrone.Core.Messaging.Events; using NzbDrone.Core.Tv; @@ -12,7 +11,6 @@ namespace NzbDrone.Core.Blocklisting List BlocklistedByTorrentInfoHash(int seriesId, string torrentInfoHash); List BlocklistedBySeries(int seriesId); void DeleteForSeriesIds(List seriesIds); - PagingSpec GetPaged(PagingSpec pagingSpec, DownloadProtocol[] protocols); } public class BlocklistRepository : BasicRepository, IBlocklistRepository @@ -42,26 +40,21 @@ namespace NzbDrone.Core.Blocklisting Delete(x => seriesIds.Contains(x.SeriesId)); } - public PagingSpec GetPaged(PagingSpec pagingSpec, DownloadProtocol[] protocols) + public override PagingSpec GetPaged(PagingSpec pagingSpec) { - pagingSpec.Records = GetPagedRecords(PagedBuilder(protocols), pagingSpec, PagedQuery); + pagingSpec.Records = GetPagedRecords(PagedBuilder(), pagingSpec, PagedQuery); var countTemplate = $"SELECT COUNT(*) FROM (SELECT /**select**/ FROM \"{TableMapping.Mapper.TableNameMapping(typeof(Blocklist))}\" /**join**/ /**innerjoin**/ /**leftjoin**/ /**where**/ /**groupby**/ /**having**/) AS \"Inner\""; - pagingSpec.TotalRecords = GetPagedRecordCount(PagedBuilder(protocols).Select(typeof(Blocklist)), pagingSpec, countTemplate); + pagingSpec.TotalRecords = GetPagedRecordCount(PagedBuilder().Select(typeof(Blocklist)), pagingSpec, countTemplate); return pagingSpec; } - private SqlBuilder PagedBuilder(DownloadProtocol[] protocols) + protected override SqlBuilder PagedBuilder() { var builder = Builder() .Join((b, m) => b.SeriesId == m.Id); - if (protocols is { Length: > 0 }) - { - builder.Where($"({BuildProtocolWhereClause(protocols)})"); - } - return builder; } @@ -71,17 +64,5 @@ namespace NzbDrone.Core.Blocklisting blocklist.Series = series; return blocklist; }); - - private string BuildProtocolWhereClause(DownloadProtocol[] protocols) - { - var clauses = new List(); - - foreach (var protocol in protocols) - { - clauses.Add($"\"{TableMapping.Mapper.TableNameMapping(typeof(Blocklist))}\".\"Protocol\" = {(int)protocol}"); - } - - return $"({string.Join(" OR ", clauses)})"; - } } } diff --git a/src/NzbDrone.Core/Blocklisting/BlocklistService.cs b/src/NzbDrone.Core/Blocklisting/BlocklistService.cs index 137a5dc32..0ec53522c 100644 --- a/src/NzbDrone.Core/Blocklisting/BlocklistService.cs +++ b/src/NzbDrone.Core/Blocklisting/BlocklistService.cs @@ -16,7 +16,7 @@ namespace NzbDrone.Core.Blocklisting { bool Blocklisted(int seriesId, ReleaseInfo release); bool BlocklistedTorrentHash(int seriesId, string hash); - PagingSpec Paged(PagingSpec pagingSpec, DownloadProtocol[] protocols); + PagingSpec Paged(PagingSpec pagingSpec); void Block(RemoteEpisode remoteEpisode, string message); void Delete(int id); void Delete(List ids); @@ -66,9 +66,9 @@ namespace NzbDrone.Core.Blocklisting b.TorrentInfoHash.Equals(hash, StringComparison.InvariantCultureIgnoreCase)); } - public PagingSpec Paged(PagingSpec pagingSpec, DownloadProtocol[] protocols) + public PagingSpec Paged(PagingSpec pagingSpec) { - return _blocklistRepository.GetPaged(pagingSpec, protocols); + return _blocklistRepository.GetPaged(pagingSpec); } public void Block(RemoteEpisode remoteEpisode, string message) diff --git a/src/Sonarr.Api.V3/Blocklist/BlocklistController.cs b/src/Sonarr.Api.V3/Blocklist/BlocklistController.cs index 5762c272b..c1f69974b 100644 --- a/src/Sonarr.Api.V3/Blocklist/BlocklistController.cs +++ b/src/Sonarr.Api.V3/Blocklist/BlocklistController.cs @@ -30,12 +30,17 @@ namespace Sonarr.Api.V3.Blocklist var pagingResource = new PagingResource(paging); var pagingSpec = pagingResource.MapToPagingSpec("date", SortDirection.Descending); - if (seriesIds != null && seriesIds.Any()) + if (seriesIds?.Any() == true) { pagingSpec.FilterExpressions.Add(b => seriesIds.Contains(b.SeriesId)); } - return pagingSpec.ApplyToPage(b => _blocklistService.Paged(pagingSpec, protocols), b => BlocklistResourceMapper.MapToResource(b, _formatCalculator)); + if (protocols?.Any() == true) + { + pagingSpec.FilterExpressions.Add(b => protocols.Contains(b.Protocol)); + } + + return pagingSpec.ApplyToPage(b => _blocklistService.Paged(pagingSpec), b => BlocklistResourceMapper.MapToResource(b, _formatCalculator)); } [RestDeleteById]