mirror of
https://github.com/Readarr/Readarr.git
synced 2026-04-18 21:34:28 -04:00
Housekeepers talk to the DB directly now
This commit is contained in:
@@ -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)
|
||||
|
||||
@@ -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)");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user