mirror of
https://github.com/lidarr/lidarr.git
synced 2025-08-23 06:45:19 -07:00
Preliminary Fix for downloaded error in Wanted section.
Ignores filters when sorting by downloaded.
This commit is contained in:
parent
5b70ecaee0
commit
2e41763b92
1 changed files with 45 additions and 3 deletions
|
@ -243,15 +243,42 @@ namespace NzbDrone.Core.Tv
|
||||||
|
|
||||||
public PagingSpec<Movie> MoviesWhereCutoffUnmet(PagingSpec<Movie> pagingSpec, List<QualitiesBelowCutoff> qualitiesBelowCutoff)
|
public PagingSpec<Movie> MoviesWhereCutoffUnmet(PagingSpec<Movie> pagingSpec, List<QualitiesBelowCutoff> qualitiesBelowCutoff)
|
||||||
{
|
{
|
||||||
|
//I know this is bad, but if you have a better Idea please tell me.
|
||||||
|
if (pagingSpec.SortKey == "downloadedQuality")
|
||||||
|
{
|
||||||
|
var mapper = _database.GetDataMapper();
|
||||||
|
var offset = pagingSpec.PagingOffset();
|
||||||
|
var limit = pagingSpec.PageSize;
|
||||||
|
var direction = "ASC";
|
||||||
|
if (pagingSpec.SortDirection == NzbDrone.Core.Datastore.SortDirection.Descending)
|
||||||
|
{
|
||||||
|
direction = "DESC";
|
||||||
|
}
|
||||||
|
|
||||||
pagingSpec.TotalRecords = MoviesWhereCutoffUnmetQuery(pagingSpec, qualitiesBelowCutoff).GetRowCount();
|
var whereClause = BuildQualityCutoffWhereClauseSpecial(qualitiesBelowCutoff);
|
||||||
pagingSpec.Records = MoviesWhereCutoffUnmetQuery(pagingSpec, qualitiesBelowCutoff).ToList();
|
|
||||||
|
var q = mapper.Query<Movie>($"SELECT * from \"Movies\" , \"MovieFiles\", \"QualityDefinitions\" WHERE Movies.MovieFileId=MovieFiles.Id AND instr(MovieFiles.Quality, ('quality\": ' || QualityDefinitions.Quality || \",\")) > 0 AND {whereClause} ORDER BY QualityDefinitions.Title {direction} LIMIT {offset},{limit};");
|
||||||
|
var q2 = mapper.Query<Movie>($"SELECT * from \"Movies\" , \"MovieFiles\", \"QualityDefinitions\" WHERE Movies.MovieFileId=MovieFiles.Id AND instr(MovieFiles.Quality, ('quality\": ' || QualityDefinitions.Quality || \",\")) > 0 AND {whereClause} ORDER BY QualityDefinitions.Title ASC;");
|
||||||
|
|
||||||
|
//var ok = q.BuildQuery();
|
||||||
|
|
||||||
|
pagingSpec.Records = q.ToList();
|
||||||
|
pagingSpec.TotalRecords = q2.Count();
|
||||||
|
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
|
||||||
|
pagingSpec.TotalRecords = MoviesWhereCutoffUnmetQuery(pagingSpec, qualitiesBelowCutoff).GetRowCount();
|
||||||
|
pagingSpec.Records = MoviesWhereCutoffUnmetQuery(pagingSpec, qualitiesBelowCutoff).ToList();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
return pagingSpec;
|
return pagingSpec;
|
||||||
}
|
}
|
||||||
|
|
||||||
private SortBuilder<Movie> MoviesWhereCutoffUnmetQuery(PagingSpec<Movie> pagingSpec, List<QualitiesBelowCutoff> qualitiesBelowCutoff)
|
private SortBuilder<Movie> MoviesWhereCutoffUnmetQuery(PagingSpec<Movie> pagingSpec, List<QualitiesBelowCutoff> qualitiesBelowCutoff)
|
||||||
{
|
{
|
||||||
return Query.Join<Movie, MovieFile>(JoinType.Left, e => e.MovieFile, (e, s) => e.MovieFileId == s.Id)
|
return Query.Join<Movie, MovieFile>(JoinType.Left, e => e.MovieFile, (e, s) => e.MovieFileId == s.Id)
|
||||||
.Where(pagingSpec.FilterExpression)
|
.Where(pagingSpec.FilterExpression)
|
||||||
.AndWhere(m => m.MovieFileId != 0)
|
.AndWhere(m => m.MovieFileId != 0)
|
||||||
|
@ -276,6 +303,21 @@ namespace NzbDrone.Core.Tv
|
||||||
return string.Format("({0})", string.Join(" OR ", clauses));
|
return string.Format("({0})", string.Join(" OR ", clauses));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private string BuildQualityCutoffWhereClauseSpecial(List<QualitiesBelowCutoff> qualitiesBelowCutoff)
|
||||||
|
{
|
||||||
|
var clauses = new List<string>();
|
||||||
|
|
||||||
|
foreach (var profile in qualitiesBelowCutoff)
|
||||||
|
{
|
||||||
|
foreach (var belowCutoff in profile.QualityIds)
|
||||||
|
{
|
||||||
|
clauses.Add(string.Format("(Movies.ProfileId = {0} AND MovieFiles.Quality LIKE '%_quality_: {1},%')", profile.ProfileId, belowCutoff));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return string.Format("({0})", string.Join(" OR ", clauses));
|
||||||
|
}
|
||||||
|
|
||||||
public Movie FindByTmdbId(int tmdbid)
|
public Movie FindByTmdbId(int tmdbid)
|
||||||
{
|
{
|
||||||
return Query.Where(m => m.TmdbId == tmdbid).FirstOrDefault();
|
return Query.Where(m => m.TmdbId == tmdbid).FirstOrDefault();
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue