From 3cc052e9b689e2fe3044a6062d5a90132070f573 Mon Sep 17 00:00:00 2001 From: Mark McDowall Date: Thu, 12 May 2011 17:55:26 -0700 Subject: [PATCH] DeleteSeriesJob now uses the providers properly. --- NzbDrone.Core/Providers/HistoryProvider.cs | 10 ++++++ .../Providers/Jobs/DeleteSeriesJob.cs | 27 +++++++++------ NzbDrone.Core/Providers/SeriesProvider.cs | 33 +------------------ 3 files changed, 28 insertions(+), 42 deletions(-) diff --git a/NzbDrone.Core/Providers/HistoryProvider.cs b/NzbDrone.Core/Providers/HistoryProvider.cs index 354f3b366..1c7e12402 100644 --- a/NzbDrone.Core/Providers/HistoryProvider.cs +++ b/NzbDrone.Core/Providers/HistoryProvider.cs @@ -55,5 +55,15 @@ namespace NzbDrone.Core.Providers Logger.Debug("Episode not in History. ID:{0} Q:{1} Proper:{2}", episodeId, quality, proper); return false; } + + public virtual void Delete(int historyId) + { + _repository.Delete(historyId); + } + + public virtual void DeleteForEpisode(int episodeId) + { + _repository.DeleteMany(h => h.EpisodeId == episodeId); + } } } \ No newline at end of file diff --git a/NzbDrone.Core/Providers/Jobs/DeleteSeriesJob.cs b/NzbDrone.Core/Providers/Jobs/DeleteSeriesJob.cs index 244b52de6..4ab634aa8 100644 --- a/NzbDrone.Core/Providers/Jobs/DeleteSeriesJob.cs +++ b/NzbDrone.Core/Providers/Jobs/DeleteSeriesJob.cs @@ -11,14 +11,22 @@ namespace NzbDrone.Core.Providers.Jobs public class DeleteSeriesJob : IJob { private readonly SeriesProvider _seriesProvider; - private readonly IRepository _repository; + private readonly SeasonProvider _seasonProvider; + private readonly EpisodeProvider _episodeProvider; + private readonly MediaFileProvider _mediaFileProvider; + private readonly HistoryProvider _historyProvider; private static readonly Logger Logger = LogManager.GetCurrentClassLogger(); - public DeleteSeriesJob(IRepository repository, SeriesProvider seriesProvider) + public DeleteSeriesJob(SeriesProvider seriesProvider, SeasonProvider seasonProvider, + EpisodeProvider episodeProvider, MediaFileProvider mediaFileProvider, + HistoryProvider historyProvider) { - _repository = repository; _seriesProvider = seriesProvider; + _seasonProvider = seasonProvider; + _episodeProvider = episodeProvider; + _mediaFileProvider = mediaFileProvider; + _historyProvider = historyProvider; } public string Name @@ -42,25 +50,24 @@ namespace NzbDrone.Core.Providers.Jobs try { - var series = _repository.Single(seriesId); + var series = _seriesProvider.GetSeries(seriesId); notification.CurrentMessage = String.Format("Beginning Delete of Series: {0}", series.Title); Logger.Debug("Deleting Series from DB {0}", series.Title); - _repository.Delete(seriesId); + _seriesProvider.DeleteSeries(seriesId); Logger.Debug("Deleting History Items from DB for Series: {0}", series.SeriesId); - var episodes = series.Episodes.Select(e => e.EpisodeId).ToList(); - episodes.ForEach(e => _repository.DeleteMany(h => h.EpisodeId == e)); + series.Episodes.ForEach(e => _historyProvider.DeleteForEpisode(e.EpisodeId)); Logger.Debug("Deleting EpisodeFiles from DB for Series: {0}", series.SeriesId); - _repository.DeleteMany(series.EpisodeFiles); + series.EpisodeFiles.ForEach(f => _mediaFileProvider.DeleteFromDb(f.EpisodeFileId)); Logger.Debug("Deleting Episodes from DB for Series: {0}", series.SeriesId); - _repository.DeleteMany(series.Episodes); + series.Episodes.ForEach(e => _episodeProvider.DeleteEpisode(e.EpisodeId)); Logger.Debug("Deleting Seasons from DB for Series: {0}", series.SeriesId); - _repository.DeleteMany(series.Seasons); + series.Seasons.ForEach(s => _seasonProvider.DeleteSeason(s.SeasonId)); notification.CurrentMessage = String.Format("Successfully deleted Series: {0}", series.Title); Logger.Info("Successfully deleted Series [{0}]", seriesId); diff --git a/NzbDrone.Core/Providers/SeriesProvider.cs b/NzbDrone.Core/Providers/SeriesProvider.cs index 07ae9573c..9117b511f 100644 --- a/NzbDrone.Core/Providers/SeriesProvider.cs +++ b/NzbDrone.Core/Providers/SeriesProvider.cs @@ -119,38 +119,7 @@ namespace NzbDrone.Core.Providers public virtual void DeleteSeries(int seriesId) { - Logger.Warn("Deleting Series [{0}]", seriesId); - - try - { - var series = _repository.Single(seriesId); - - //Delete Files, Episdes, Seasons then the Series - //Can't use providers because episode provider needs series provider - Cyclic Dependency Injection, this will work - - Logger.Debug("Deleting History Items from DB for Series: {0}", series.SeriesId); - var episodes = series.Episodes.Select(e => e.EpisodeId).ToList(); - episodes.ForEach(e => _repository.DeleteMany(h => h.EpisodeId == e)); - - Logger.Debug("Deleting EpisodeFiles from DB for Series: {0}", series.SeriesId); - _repository.DeleteMany(series.EpisodeFiles); - - Logger.Debug("Deleting Episodes from DB for Series: {0}", series.SeriesId); - _repository.DeleteMany(series.Episodes); - - Logger.Debug("Deleting Seasons from DB for Series: {0}", series.SeriesId); - _repository.DeleteMany(series.Seasons); - - Logger.Debug("Deleting Series from DB {0}", series.Title); - _repository.Delete(seriesId); - - Logger.Info("Successfully deleted Series [{0}]", seriesId); - } - catch (Exception e) - { - Logger.ErrorException("An error has occurred while deleting series.", e); - throw; - } + _repository.Delete(seriesId); } public virtual bool SeriesPathExists(string cleanPath)