1
0
mirror of https://github.com/Radarr/Radarr.git synced 2026-04-18 21:35:51 -04:00

Housekeepers talk to the DB directly now

This commit is contained in:
Mark McDowall
2013-09-18 17:28:25 -07:00
parent 6c91639d64
commit f716a6d9fd
11 changed files with 161 additions and 141 deletions
@@ -12,8 +12,6 @@ namespace NzbDrone.Core.History
{
void Trim();
List<QualityModel> GetEpisodeHistory(int episodeId);
void CleanupOrphanedBySeries();
void CleanupOrphanedByEpisode();
}
public class HistoryRepository : BasicRepository<History>, IHistoryRepository
@@ -39,30 +37,6 @@ namespace NzbDrone.Core.History
return history.Select(h => h.Quality).ToList();
}
public void CleanupOrphanedBySeries()
{
var mapper = _database.GetDataMapper();
mapper.ExecuteNonQuery(@"DELETE FROM History
WHERE Id IN (
SELECT History.Id FROM History
LEFT OUTER JOIN Series
ON History.SeriesId = Series.Id
WHERE Series.Id IS NULL)");
}
public void CleanupOrphanedByEpisode()
{
var mapper = _database.GetDataMapper();
mapper.ExecuteNonQuery(@"DELETE FROM History
WHERE Id IN (
SELECT History.Id FROM History
LEFT OUTER JOIN Episodes
ON History.EpisodeId = Episodes.Id
WHERE Episodes.Id IS NULL)");
}
public override PagingSpec<History> GetPaged(PagingSpec<History> pagingSpec)
{
var pagingQuery = Query.Join<History, Series>(JoinType.Inner, h => h.Series, (h, s) => h.SeriesId == s.Id)
-7
View File
@@ -17,7 +17,6 @@ namespace NzbDrone.Core.History
void Trim();
QualityModel GetBestQualityInHistory(int episodeId);
PagingSpec<History> Paged(PagingSpec<History> pagingSpec);
void CleanupOrphaned();
}
public class HistoryService : IHistoryService, IHandle<EpisodeGrabbedEvent>, IHandle<EpisodeImportedEvent>
@@ -41,12 +40,6 @@ namespace NzbDrone.Core.History
return _historyRepository.GetPaged(pagingSpec);
}
public void CleanupOrphaned()
{
_historyRepository.CleanupOrphanedBySeries();
_historyRepository.CleanupOrphanedByEpisode();
}
public void Purge()
{
_historyRepository.Purge();
@@ -1,23 +1,32 @@
using NLog;
using NzbDrone.Core.Datastore;
using NzbDrone.Core.Tv;
namespace NzbDrone.Core.Housekeeping.Housekeepers
{
public class CleanupOrphanedEpisodes : IHousekeepingTask
{
private readonly IEpisodeService _episodeService;
private readonly IDatabase _database;
private readonly Logger _logger;
public CleanupOrphanedEpisodes(IEpisodeService episodeService, Logger logger)
public CleanupOrphanedEpisodes(IDatabase database, Logger logger)
{
_episodeService = episodeService;
_database = database;
_logger = logger;
}
public void Clean()
{
_logger.Trace("Running orphaned episodes cleanup");
_episodeService.CleanupOrphanedEpisodes();
var mapper = _database.GetDataMapper();
mapper.ExecuteNonQuery(@"DELETE FROM Episodes
WHERE Id IN (
SELECT Episodes.Id FROM Episodes
LEFT OUTER JOIN Series
ON Episodes.SeriesId = Series.Id
WHERE Series.Id IS NULL)");
}
}
}
@@ -1,23 +1,49 @@
using NLog;
using NzbDrone.Core.Datastore;
using NzbDrone.Core.History;
namespace NzbDrone.Core.Housekeeping.Housekeepers
{
public class CleanupOrphanedHistoryItems : IHousekeepingTask
{
private readonly IHistoryService _historyService;
private readonly IDatabase _database;
private readonly Logger _logger;
public CleanupOrphanedHistoryItems(IHistoryService historyService, Logger logger)
public CleanupOrphanedHistoryItems(IDatabase database, Logger logger)
{
_historyService = historyService;
_database = database;
_logger = logger;
}
public void Clean()
{
_logger.Trace("Running orphaned history cleanup");
_historyService.CleanupOrphaned();
CleanupOrphanedBySeries();
CleanupOrphanedByEpisode();
}
private void CleanupOrphanedBySeries()
{
var mapper = _database.GetDataMapper();
mapper.ExecuteNonQuery(@"DELETE FROM History
WHERE Id IN (
SELECT History.Id FROM History
LEFT OUTER JOIN Series
ON History.SeriesId = Series.Id
WHERE Series.Id IS NULL)");
}
private void CleanupOrphanedByEpisode()
{
var mapper = _database.GetDataMapper();
mapper.ExecuteNonQuery(@"DELETE FROM History
WHERE Id IN (
SELECT History.Id FROM History
LEFT OUTER JOIN Episodes
ON History.EpisodeId = Episodes.Id
WHERE Episodes.Id IS NULL)");
}
}
}
-13
View File
@@ -22,7 +22,6 @@ namespace NzbDrone.Core.Tv
void SetMonitoredFlat(Episode episode, bool monitored);
void SetMonitoredBySeason(int seriesId, int seasonNumber, bool monitored);
void SetFileId(int episodeId, int fileId);
void CleanupOrphanedEpisodes();
}
public class EpisodeRepository : BasicRepository<Episode>, IEpisodeRepository
@@ -124,18 +123,6 @@ namespace NzbDrone.Core.Tv
SetFields(new Episode { Id = episodeId, EpisodeFileId = fileId }, episode => episode.EpisodeFileId);
}
public void CleanupOrphanedEpisodes()
{
var mapper = _database.GetDataMapper();
mapper.ExecuteNonQuery(@"DELETE FROM Episodes
WHERE Id IN (
SELECT Episodes.Id FROM Episodes
LEFT OUTER JOIN Series
ON Episodes.SeriesId = Series.Id
WHERE Series.Id IS NULL)");
}
private SortBuilder<Episode> GetEpisodesWithoutFilesQuery(PagingSpec<Episode> pagingSpec, DateTime currentTime, int startingSeasonNumber)
{
return Query.Join<Episode, Series>(JoinType.Inner, e => e.Series, (e, s) => e.SeriesId == s.Id)
-6
View File
@@ -29,7 +29,6 @@ namespace NzbDrone.Core.Tv
void UpdateMany(List<Episode> episodes);
void DeleteMany(List<Episode> episodes);
void SetEpisodeMonitoredBySeason(int seriesId, int seasonNumber, bool monitored);
void CleanupOrphanedEpisodes();
}
public class EpisodeService : IEpisodeService,
@@ -113,11 +112,6 @@ namespace NzbDrone.Core.Tv
_episodeRepository.SetMonitoredBySeason(seriesId, seasonNumber, monitored);
}
public void CleanupOrphanedEpisodes()
{
_episodeRepository.CleanupOrphanedEpisodes();
}
public bool IsFirstOrLastEpisodeOfSeason(int episodeId)
{
var episode = GetEpisode(episodeId);