From 1a9d7c3c28ffb3696a73376bccf9160f81a73acb Mon Sep 17 00:00:00 2001 From: Qstick Date: Mon, 3 Aug 2020 02:09:57 -0400 Subject: [PATCH] Fixed: IOE when multiple movies have same ExtraFile relative paths Fixes RADARR-15 --- src/NzbDrone.Core/Extras/Files/ExtraFileRepository.cs | 6 ------ src/NzbDrone.Core/Extras/Files/ExtraFileService.cs | 6 ------ src/NzbDrone.Core/Extras/Others/OtherExtraFileRenamer.cs | 8 +++----- 3 files changed, 3 insertions(+), 17 deletions(-) diff --git a/src/NzbDrone.Core/Extras/Files/ExtraFileRepository.cs b/src/NzbDrone.Core/Extras/Files/ExtraFileRepository.cs index cf787b552..e3390bc1c 100644 --- a/src/NzbDrone.Core/Extras/Files/ExtraFileRepository.cs +++ b/src/NzbDrone.Core/Extras/Files/ExtraFileRepository.cs @@ -12,7 +12,6 @@ public interface IExtraFileRepository : IBasicRepository void DeleteForMovieFile(int movieFileId); List GetFilesByMovie(int movieId); List GetFilesByMovieFile(int movieFileId); - TExtraFile FindByPath(string path); } public class ExtraFileRepository : BasicRepository, IExtraFileRepository @@ -42,10 +41,5 @@ public List GetFilesByMovieFile(int movieFileId) { return Query(x => x.MovieFileId == movieFileId); } - - public TExtraFile FindByPath(string path) - { - return Query(x => x.RelativePath == path).SingleOrDefault(); - } } } diff --git a/src/NzbDrone.Core/Extras/Files/ExtraFileService.cs b/src/NzbDrone.Core/Extras/Files/ExtraFileService.cs index da7c223c9..63ce48e26 100644 --- a/src/NzbDrone.Core/Extras/Files/ExtraFileService.cs +++ b/src/NzbDrone.Core/Extras/Files/ExtraFileService.cs @@ -17,7 +17,6 @@ public interface IExtraFileService { List GetFilesByMovie(int movieId); List GetFilesByMovieFile(int movieFileId); - TExtraFile FindByPath(string path); void Upsert(TExtraFile extraFile); void Upsert(List extraFiles); void Delete(int id); @@ -58,11 +57,6 @@ public List GetFilesByMovieFile(int movieFileId) return _repository.GetFilesByMovieFile(movieFileId); } - public TExtraFile FindByPath(string path) - { - return _repository.FindByPath(path); - } - public void Upsert(TExtraFile extraFile) { Upsert(new List { extraFile }); diff --git a/src/NzbDrone.Core/Extras/Others/OtherExtraFileRenamer.cs b/src/NzbDrone.Core/Extras/Others/OtherExtraFileRenamer.cs index 0957ef030..4f68b2e37 100644 --- a/src/NzbDrone.Core/Extras/Others/OtherExtraFileRenamer.cs +++ b/src/NzbDrone.Core/Extras/Others/OtherExtraFileRenamer.cs @@ -1,3 +1,4 @@ +using System.Linq; using NLog; using NzbDrone.Common.Disk; using NzbDrone.Common.Extensions; @@ -16,11 +17,9 @@ public class OtherExtraFileRenamer : IOtherExtraFileRenamer private readonly Logger _logger; private readonly IDiskProvider _diskProvider; private readonly IRecycleBinProvider _recycleBinProvider; - private readonly IMovieService _movieService; private readonly IOtherExtraFileService _otherExtraFileService; public OtherExtraFileRenamer(IOtherExtraFileService otherExtraFileService, - IMovieService movieService, IRecycleBinProvider recycleBinProvider, IDiskProvider diskProvider, Logger logger) @@ -28,7 +27,6 @@ public OtherExtraFileRenamer(IOtherExtraFileService otherExtraFileService, _logger = logger; _diskProvider = diskProvider; _recycleBinProvider = recycleBinProvider; - _movieService = movieService; _otherExtraFileService = otherExtraFileService; } @@ -41,7 +39,7 @@ public void RenameOtherExtraFile(Movie movie, string path) var relativePath = movie.Path.GetRelativePath(path); - var otherExtraFile = _otherExtraFileService.FindByPath(relativePath); + var otherExtraFile = _otherExtraFileService.GetFilesByMovie(movie.Id).Where(e => e.RelativePath == relativePath).SingleOrDefault(); if (otherExtraFile != null) { var newPath = path + "-orig"; @@ -66,7 +64,7 @@ private void RemoveOtherExtraFile(Movie movie, string path) var relativePath = movie.Path.GetRelativePath(path); - var otherExtraFile = _otherExtraFileService.FindByPath(relativePath); + var otherExtraFile = _otherExtraFileService.GetFilesByMovie(movie.Id).Where(e => e.RelativePath == relativePath).SingleOrDefault(); if (otherExtraFile != null) { _recycleBinProvider.DeleteFile(path);