diff --git a/src/NzbDrone.Core/Datastore/BasicRepository.cs b/src/NzbDrone.Core/Datastore/BasicRepository.cs index 1e20a5ae0..85b46fd64 100644 --- a/src/NzbDrone.Core/Datastore/BasicRepository.cs +++ b/src/NzbDrone.Core/Datastore/BasicRepository.cs @@ -50,7 +50,7 @@ namespace NzbDrone.Core.Datastore _eventAggregator = eventAggregator; } - protected QueryBuilder Query => DataMapper.Query(); + protected QueryBuilder Query => AddJoinQueries(DataMapper.Query()); protected void Delete(Expression> filter) { @@ -59,7 +59,7 @@ namespace NzbDrone.Core.Datastore public IEnumerable All() { - return DataMapper.Query().ToList(); + return AddJoinQueries(DataMapper.Query()).ToList(); } public int Count() @@ -296,6 +296,11 @@ namespace NzbDrone.Core.Datastore } } + protected virtual QueryBuilder AddJoinQueries(QueryBuilder baseQuery) + { + return baseQuery; + } + protected virtual bool PublishModelEvents => false; } } diff --git a/src/NzbDrone.Core/Movies/AlternativeTitles/AlternativeTitleService.cs b/src/NzbDrone.Core/Movies/AlternativeTitles/AlternativeTitleService.cs index 1d697ed12..8567b6b9a 100644 --- a/src/NzbDrone.Core/Movies/AlternativeTitles/AlternativeTitleService.cs +++ b/src/NzbDrone.Core/Movies/AlternativeTitles/AlternativeTitleService.cs @@ -13,6 +13,7 @@ namespace NzbDrone.Core.Movies.AlternativeTitles AlternativeTitle AddAltTitle(AlternativeTitle title, Movie movie); List AddAltTitles(List titles, Movie movie); AlternativeTitle GetById(int id); + List GetAllTitles(); void DeleteNotEnoughVotes(List mappingsTitles); } @@ -58,6 +59,11 @@ namespace NzbDrone.Core.Movies.AlternativeTitles return _titleRepo.Get(id); } + public List GetAllTitles() + { + return _titleRepo.All().ToList(); + } + public void RemoveTitle(AlternativeTitle title) { _titleRepo.Delete(title); diff --git a/src/NzbDrone.Core/Movies/MovieRepository.cs b/src/NzbDrone.Core/Movies/MovieRepository.cs index b3fd72a23..35095c139 100644 --- a/src/NzbDrone.Core/Movies/MovieRepository.cs +++ b/src/NzbDrone.Core/Movies/MovieRepository.cs @@ -270,5 +270,14 @@ namespace NzbDrone.Core.Movies { return Query.Where(m => m.TmdbId == tmdbid).FirstOrDefault(); } + + protected override QueryBuilder AddJoinQueries(QueryBuilder baseQuery) + { + baseQuery = base.AddJoinQueries(baseQuery); + baseQuery = baseQuery.Join(JoinType.Left, m => m.AlternativeTitles, + (m, t) => m.Id == t.MovieId); + + return baseQuery; + } } } diff --git a/src/NzbDrone.Core/Parser/ParsingService.cs b/src/NzbDrone.Core/Parser/ParsingService.cs index 17a6dfbc2..e660b3230 100644 --- a/src/NzbDrone.Core/Parser/ParsingService.cs +++ b/src/NzbDrone.Core/Parser/ParsingService.cs @@ -450,16 +450,12 @@ namespace NzbDrone.Core.Parser { case MappingResultType.Success: return $"Successfully mapped release name {ReleaseName} to movie {Movie}"; - break; case MappingResultType.SuccessLenientMapping: return $"Successfully mapped parts of the release name {ReleaseName} to movie {Movie}"; - break; case MappingResultType.NotParsable: return $"Failed to find movie title in release name {ReleaseName}"; - break; case MappingResultType.TitleNotFound: return $"Could not find {RemoteMovie.ParsedMovieInfo.MovieTitle}"; - break; case MappingResultType.WrongYear: return $"Failed to map movie, expected year {RemoteMovie.Movie.Year}, but found {RemoteMovie.ParsedMovieInfo.Year}"; case MappingResultType.WrongTitle: diff --git a/src/Radarr.Api.V2/Movies/AlternativeTitleModule.cs b/src/Radarr.Api.V2/Movies/AlternativeTitleModule.cs index 4dbc47b50..4a6fa60a6 100644 --- a/src/Radarr.Api.V2/Movies/AlternativeTitleModule.cs +++ b/src/Radarr.Api.V2/Movies/AlternativeTitleModule.cs @@ -1,19 +1,8 @@ using System; using System.Collections.Generic; -using System.Linq; -using Marr.Data; -using Nancy; -using Radarr.Api.V2; -using NzbDrone.Common.Cache; -using NzbDrone.Common.Extensions; -using NzbDrone.Core.MediaCover; -using NzbDrone.Core.MediaFiles; -using NzbDrone.Core.MediaFiles.MovieImport; using NzbDrone.Core.Messaging.Events; -using NzbDrone.Core.MetadataSource; using NzbDrone.Core.MetadataSource.RadarrAPI; using NzbDrone.Core.Movies.AlternativeTitles; -using NzbDrone.Core.RootFolders; using NzbDrone.Core.Movies; using NzbDrone.Core.Movies.Events; using Radarr.Http; @@ -33,9 +22,11 @@ namespace Radarr.Api.V2.Movies _altTitleService = altTitleService; _movieService = movieService; _radarrApi = radarrApi; - CreateResource = AddTitle; - GetResourceById = GetTitle; _eventAggregator = eventAggregator; + + CreateResource = AddTitle; + GetResourceById = GetAltTitle; + GetResourceAll = GetAltTitles; } private int AddTitle(AlternativeTitleResource altTitle) @@ -49,9 +40,23 @@ namespace Radarr.Api.V2.Movies return addedTitle.Id; } - private AlternativeTitleResource GetTitle(int id) + private AlternativeTitleResource GetAltTitle(int id) { return _altTitleService.GetById(id).ToResource(); } + + private List GetAltTitles() + { + var movieIdQuery = Request.Query.MovieId; + + if (movieIdQuery.HasValue) + { + int movieId = Convert.ToInt32(movieIdQuery.Value); + + return _altTitleService.GetAllTitlesForMovie(movieId).ToResource(); + } + + return _altTitleService.GetAllTitles().ToResource(); + } } } diff --git a/src/Radarr.Api.V2/Movies/AlternativeTitleResource.cs b/src/Radarr.Api.V2/Movies/AlternativeTitleResource.cs index e70964ea9..505c2d52b 100644 --- a/src/Radarr.Api.V2/Movies/AlternativeTitleResource.cs +++ b/src/Radarr.Api.V2/Movies/AlternativeTitleResource.cs @@ -2,12 +2,7 @@ using System; using System.Collections.Generic; using System.Linq; using Radarr.Http.REST; -using NzbDrone.Core.MediaCover; -using NzbDrone.Core.Movies; -using NzbDrone.Core.Qualities; -using NzbDrone.Core.MediaFiles; using NzbDrone.Core.Movies.AlternativeTitles; -using NzbDrone.Core.Parser; using NzbDrone.Core.Languages; namespace Radarr.Api.V2.Movies