From 0972c956b8763bd45eb6f3cd8bdb1088a4073425 Mon Sep 17 00:00:00 2001 From: Mark McDowall Date: Sun, 19 Jun 2011 16:44:45 -0700 Subject: [PATCH] HistoryProvider will return History Items with Episode and SeriesTitle. --- NzbDrone.Core/Providers/HistoryProvider.cs | 13 +++++-- NzbDrone.Core/Repository/History.cs | 6 ++++ NzbDrone.Web/Controllers/HistoryController.cs | 34 +++++++------------ 3 files changed, 29 insertions(+), 24 deletions(-) diff --git a/NzbDrone.Core/Providers/HistoryProvider.cs b/NzbDrone.Core/Providers/HistoryProvider.cs index e389ded79..98a1ab883 100644 --- a/NzbDrone.Core/Providers/HistoryProvider.cs +++ b/NzbDrone.Core/Providers/HistoryProvider.cs @@ -25,9 +25,18 @@ namespace NzbDrone.Core.Providers { } - public virtual IEnumerable AllItems() + public virtual List AllItems() { - return _database.Query(""); + return _database.Fetch(""); + } + + public virtual List AllItemsWithRelationships() + { + return _database.Fetch(@" + SELECT History.*, Series.Title as SeriesTitle, Episodes.* FROM History + INNER JOIN Series ON History.SeriesId = Series.SeriesId + INNER JOIN Episodes ON History.EpisodeId = Episodes.EpisodeId + "); } public virtual void Purge() diff --git a/NzbDrone.Core/Repository/History.cs b/NzbDrone.Core/Repository/History.cs index a062d1c37..d34d6c2b2 100644 --- a/NzbDrone.Core/Repository/History.cs +++ b/NzbDrone.Core/Repository/History.cs @@ -16,5 +16,11 @@ namespace NzbDrone.Core.Repository public DateTime Date { get; set; } public bool IsProper { get; set; } public string Indexer { get; set; } + + [ResultColumn] + public Episode Episode { get; set; } + + [ResultColumn] + public string SeriesTitle { get; set; } } } \ No newline at end of file diff --git a/NzbDrone.Web/Controllers/HistoryController.cs b/NzbDrone.Web/Controllers/HistoryController.cs index 344af644a..1802396f8 100644 --- a/NzbDrone.Web/Controllers/HistoryController.cs +++ b/NzbDrone.Web/Controllers/HistoryController.cs @@ -46,30 +46,20 @@ namespace NzbDrone.Web.Controllers [GridAction] public ActionResult _AjaxBinding() { - var historyDb = _historyProvider.AllItems(); - - var history = new List(); - - foreach (var item in historyDb) - { - var episode = _episodeProvider.GetEpisode(item.EpisodeId); - var series = _seriesProvider.GetSeries(item.SeriesId); - - history.Add(new HistoryModel + var history = _historyProvider.AllItemsWithRelationships().Select(h => new HistoryModel { - HistoryId = item.HistoryId, - SeasonNumber = episode.SeasonNumber, - EpisodeNumber = episode.EpisodeNumber, - EpisodeTitle = episode.Title, - EpisodeOverview = episode.Overview, - SeriesTitle = series.Title, - NzbTitle = item.NzbTitle, - Quality = item.Quality.ToString(), - IsProper = item.IsProper, - Date = item.Date, - Indexer = item.Indexer + HistoryId = h.HistoryId, + SeasonNumber = h.Episode.SeasonNumber, + EpisodeNumber = h.Episode.EpisodeNumber, + EpisodeTitle = h.Episode.Title, + EpisodeOverview = h.Episode.Overview, + SeriesTitle = h.SeriesTitle, + NzbTitle = h.NzbTitle, + Quality = h.Quality.ToString(), + IsProper = h.IsProper, + Date = h.Date, + Indexer = h.Indexer }); - } return View(new GridModel(history)); }