Fixed: Prevent error on MovieFile Delete if no movie references movieFile

Fixes #4042
This commit is contained in:
Qstick 2020-01-08 22:08:26 -05:00
parent e70be7cf9e
commit c060f9fd4d
1 changed files with 29 additions and 27 deletions

View File

@ -35,7 +35,7 @@ namespace NzbDrone.Core.Movies
Movie FindByPath(string path); Movie FindByPath(string path);
List<string> AllMoviePaths(); List<string> AllMoviePaths();
bool MovieExists(Movie movie); bool MovieExists(Movie movie);
Movie GetMovieByFileId(int fileId); List<Movie> GetMoviesByFileId(int fileId);
List<Movie> GetMoviesBetweenDates(DateTime start, DateTime end, bool includeUnmonitored); List<Movie> GetMoviesBetweenDates(DateTime start, DateTime end, bool includeUnmonitored);
PagingSpec<Movie> MoviesWithoutFiles(PagingSpec<Movie> pagingSpec); PagingSpec<Movie> MoviesWithoutFiles(PagingSpec<Movie> pagingSpec);
void SetFileId(Movie movie, MovieFile movieFile); void SetFileId(Movie movie, MovieFile movieFile);
@ -358,39 +358,15 @@ namespace NzbDrone.Core.Movies
_movieRepository.SetFields(movie, s => s.AddOptions); _movieRepository.SetFields(movie, s => s.AddOptions);
} }
public void Handle(MovieFileAddedEvent message)
{
var movie = message.MovieFile.Movie;
movie.MovieFileId = message.MovieFile.Id;
_movieRepository.Update(movie);
//_movieRepository.SetFileId(message.MovieFile.Id, message.MovieFile.Movie.Value.Id);
_logger.Info("Linking [{0}] > [{1}]", message.MovieFile.RelativePath, message.MovieFile.Movie);
}
public void SetFileId(Movie movie, MovieFile movieFile) public void SetFileId(Movie movie, MovieFile movieFile)
{ {
_movieRepository.SetFileId(movieFile.Id, movie.Id); _movieRepository.SetFileId(movieFile.Id, movie.Id);
_logger.Info("Linking [{0}] > [{1}]", movieFile.RelativePath, movie); _logger.Info("Linking [{0}] > [{1}]", movieFile.RelativePath, movie);
} }
public void Handle(MovieFileDeletedEvent message) public List<Movie> GetMoviesByFileId(int fileId)
{ {
var movie = _movieRepository.GetMoviesByFileId(message.MovieFile.Id).First(); return _movieRepository.GetMoviesByFileId(fileId);
movie.MovieFileId = 0;
_logger.Debug("Detaching movie {0} from file.", movie.Id);
if (message.Reason != DeleteMediaFileReason.Upgrade && _configService.AutoUnmonitorPreviouslyDownloadedMovies)
{
movie.Monitored = false;
}
UpdateMovie(movie);
}
public Movie GetMovieByFileId(int fileId)
{
return _movieRepository.GetMoviesByFileId(fileId).First();
} }
public Movie FindByTitleSlug(string slug) public Movie FindByTitleSlug(string slug)
@ -469,5 +445,31 @@ namespace NzbDrone.Core.Movies
return ret; return ret;
} }
public void Handle(MovieFileAddedEvent message)
{
var movie = message.MovieFile.Movie;
movie.MovieFileId = message.MovieFile.Id;
_movieRepository.Update(movie);
//_movieRepository.SetFileId(message.MovieFile.Id, message.MovieFile.Movie.Value.Id);
_logger.Info("Linking [{0}] > [{1}]", message.MovieFile.RelativePath, message.MovieFile.Movie);
}
public void Handle(MovieFileDeletedEvent message)
{
foreach (var movie in GetMoviesByFileId(message.MovieFile.Id))
{
_logger.Debug("Detaching movie {0} from file.", movie.Id);
movie.MovieFileId = 0;
if (message.Reason != DeleteMediaFileReason.Upgrade && _configService.AutoUnmonitorPreviouslyDownloadedMovies)
{
movie.Monitored = false;
}
UpdateMovie(movie);
}
}
} }
} }