diff --git a/src/NzbDrone.Core/ImportLists/ImportListMovies/ImportListMovieRepository.cs b/src/NzbDrone.Core/ImportLists/ImportListMovies/ImportListMovieRepository.cs index 7a1e920948..2395b488c3 100644 --- a/src/NzbDrone.Core/ImportLists/ImportListMovies/ImportListMovieRepository.cs +++ b/src/NzbDrone.Core/ImportLists/ImportListMovies/ImportListMovieRepository.cs @@ -25,9 +25,7 @@ public List GetAllForLists(List listIds) public bool ExistsByMetadataId(int metadataId) { - var movies = Query(x => x.MovieMetadataId == metadataId); - - return movies.Any(); + return Query(x => x.MovieMetadataId == metadataId).Any(); } } } diff --git a/src/NzbDrone.Core/Movies/MovieRepository.cs b/src/NzbDrone.Core/Movies/MovieRepository.cs index 859a502db3..b0327ba1f7 100644 --- a/src/NzbDrone.Core/Movies/MovieRepository.cs +++ b/src/NzbDrone.Core/Movies/MovieRepository.cs @@ -61,12 +61,13 @@ protected override IEnumerable PagedQuery(SqlBuilder builder) => .LeftJoin((m, f) => m.Id == f.MovieId) .LeftJoin((mm, t) => mm.Id == t.MovieMetadataId); - private Movie Map(Dictionary dict, Movie movie, QualityProfile profile, MovieFile movieFile, AlternativeTitle altTitle = null, MovieTranslation translation = null) + private Movie Map(Dictionary dict, Movie movie, MovieMetadata metadata, QualityProfile qualityProfile, MovieFile movieFile, AlternativeTitle altTitle = null, MovieTranslation translation = null) { if (!dict.TryGetValue(movie.Id, out var movieEntry)) { movieEntry = movie; - movieEntry.QualityProfile = profile; + movieEntry.MovieMetadata = metadata; + movieEntry.QualityProfile = qualityProfile; movieEntry.MovieFile = movieFile; dict.Add(movieEntry.Id, movieEntry); } @@ -88,9 +89,9 @@ protected override List Query(SqlBuilder builder) { var movieDictionary = new Dictionary(); - _ = _database.QueryJoined( + _ = _database.QueryJoined( builder, - (movie, profile, file, altTitle) => Map(movieDictionary, movie, profile, file, altTitle)); + (movie, metadata, qualityProfile, file, altTitle) => Map(movieDictionary, movie, metadata, qualityProfile, file, altTitle)); return movieDictionary.Values.ToList(); } @@ -100,23 +101,23 @@ public override IEnumerable All() // the skips the join on profile and alternative title and populates manually // to avoid repeatedly deserializing the same profile / movie var builder = new SqlBuilder(_database.DatabaseType) - .LeftJoin((m, f) => m.MovieFileId == f.Id) - .LeftJoin((m, f) => m.MovieMetadataId == f.Id); + .LeftJoin((m, f) => m.MovieMetadataId == f.Id) + .LeftJoin((m, f) => m.MovieFileId == f.Id); - var profiles = _profileRepository.All().ToDictionary(x => x.Id); - var titles = _alternativeTitleRepository.All() + var qualityProfiles = _profileRepository.All().ToDictionary(x => x.Id); + var alternativeTitles = _alternativeTitleRepository.All() .GroupBy(x => x.MovieMetadataId) .ToDictionary(x => x.Key, y => y.ToList()); - return _database.QueryJoined( + return _database.QueryJoined( builder, - (movie, file, metadata) => + (movie, metadata, file) => { - movie.MovieFile = file; movie.MovieMetadata = metadata; - movie.QualityProfile = profiles[movie.QualityProfileId]; + movie.MovieFile = file; + movie.QualityProfile = qualityProfiles[movie.QualityProfileId]; - if (titles.TryGetValue(movie.MovieMetadataId, out var altTitles)) + if (alternativeTitles.TryGetValue(movie.MovieMetadataId, out var altTitles)) { movie.MovieMetadata.Value.AlternativeTitles = altTitles; } @@ -155,9 +156,9 @@ private List FindByMovieTitles(List titles) .LeftJoin((m, f) => m.Id == f.MovieId) .Where(x => titles.Contains(x.CleanTitle) || titles.Contains(x.CleanOriginalTitle)); - _ = _database.QueryJoined( + _ = _database.QueryJoined( builder, - (movie, profile, file) => Map(movieDictionary, movie, profile, file)); + (movie, metadata, qualityProfile, file) => Map(movieDictionary, movie, metadata, qualityProfile, file)); return movieDictionary.Values.ToList(); } @@ -167,17 +168,17 @@ private List FindByAltTitles(List titles) var movieDictionary = new Dictionary(); var builder = new SqlBuilder(_database.DatabaseType) - .Join((t, mm) => t.MovieMetadataId == mm.Id) - .Join((mm, m) => mm.Id == m.MovieMetadataId) - .Join((m, p) => m.QualityProfileId == p.Id) - .LeftJoin((m, f) => m.Id == f.MovieId) - .Where(x => titles.Contains(x.CleanTitle)); + .Join((t, mm) => t.MovieMetadataId == mm.Id) + .Join((mm, m) => mm.Id == m.MovieMetadataId) + .Join((m, p) => m.QualityProfileId == p.Id) + .LeftJoin((m, f) => m.Id == f.MovieId) + .Where(x => titles.Contains(x.CleanTitle)); - _ = _database.QueryJoined( + _ = _database.QueryJoined( builder, - (altTitle, profile, movie, file) => + (altTitle, qualityProfile, movie, metadata, file) => { - _ = Map(movieDictionary, movie, profile, file, altTitle); + _ = Map(movieDictionary, movie, metadata, qualityProfile, file, altTitle); return null; }); @@ -195,11 +196,11 @@ private List FindByTransTitles(List titles) .LeftJoin((m, f) => m.Id == f.MovieId) .Where(x => titles.Contains(x.CleanTitle)); - _ = _database.QueryJoined( + _ = _database.QueryJoined( builder, - (trans, profile, movie, file) => + (trans, qualityProfile, movie, metadata, file) => { - _ = Map(movieDictionary, movie, profile, file, null, trans); + _ = Map(movieDictionary, movie, metadata, qualityProfile, file, null, trans); return null; }); @@ -378,17 +379,14 @@ CROSS JOIN json_each(""MovieMetadata"".""Recommendations"") AS ""j"" public bool ExistsByMetadataId(int metadataId) { - var movies = Query(x => x.MovieMetadataId == metadataId); - - return movies.Any(); + return Query(x => x.MovieMetadataId == metadataId).Any(); } public HashSet AllMovieWithCollectionsTmdbIds() { - using (var conn = _database.OpenConnection()) - { - return conn.Query("SELECT \"TmdbId\" FROM \"MovieMetadata\" JOIN \"Movies\" ON (\"Movies\".\"MovieMetadataId\" = \"MovieMetadata\".\"Id\") WHERE \"CollectionTmdbId\" > 0").ToHashSet(); - } + using var conn = _database.OpenConnection(); + + return conn.Query("SELECT \"TmdbId\" FROM \"MovieMetadata\" JOIN \"Movies\" ON (\"Movies\".\"MovieMetadataId\" = \"MovieMetadata\".\"Id\") WHERE \"CollectionTmdbId\" > 0").ToHashSet(); } } }