Remove double filtering in entity history repository

pull/9589/head
Bogdan 5 months ago
parent f7816aa5cd
commit f5914da2f9

@ -97,23 +97,21 @@ namespace NzbDrone.Core.History
public PagingSpec<MovieHistory> GetPaged(PagingSpec<MovieHistory> pagingSpec, int[] languages, int[] qualities) public PagingSpec<MovieHistory> GetPaged(PagingSpec<MovieHistory> 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(MovieHistory))}\" /**join**/ /**innerjoin**/ /**leftjoin**/ /**where**/ /**groupby**/ /**having**/) AS \"Inner\""; var countTemplate = $"SELECT COUNT(*) FROM (SELECT /**select**/ FROM \"{TableMapping.Mapper.TableNameMapping(typeof(MovieHistory))}\" /**join**/ /**innerjoin**/ /**leftjoin**/ /**where**/ /**groupby**/ /**having**/) AS \"Inner\"";
pagingSpec.TotalRecords = GetPagedRecordCount(PagedBuilder(pagingSpec, languages, qualities).Select(typeof(MovieHistory)), pagingSpec, countTemplate); pagingSpec.TotalRecords = GetPagedRecordCount(PagedBuilder(languages, qualities).Select(typeof(MovieHistory)), pagingSpec, countTemplate);
return pagingSpec; return pagingSpec;
} }
private SqlBuilder PagedBuilder(PagingSpec<MovieHistory> pagingSpec, int[] languages, int[] qualities) private SqlBuilder PagedBuilder(int[] languages, int[] qualities)
{ {
var builder = Builder() var builder = Builder()
.Join<MovieHistory, Movie>((h, m) => h.MovieId == m.Id) .Join<MovieHistory, Movie>((h, m) => h.MovieId == m.Id)
.Join<Movie, QualityProfile>((m, p) => m.QualityProfileId == p.Id) .Join<Movie, QualityProfile>((m, p) => m.QualityProfileId == p.Id)
.LeftJoin<Movie, MovieMetadata>((m, mm) => m.MovieMetadataId == mm.Id); .LeftJoin<Movie, MovieMetadata>((m, mm) => m.MovieMetadataId == mm.Id);
AddFilters(builder, pagingSpec);
if (languages is { Length: > 0 }) if (languages is { Length: > 0 })
{ {
builder.Where($"({BuildLanguageWhereClause(languages)})"); builder.Where($"({BuildLanguageWhereClause(languages)})");

Loading…
Cancel
Save