mirror of
https://github.com/Radarr/Radarr
synced 2025-02-26 16:13:19 +00:00
Blacklist cleanup
Fixed: Cleanup blacklist when series is deleted Fixed: Cleanup blacklist on startup
This commit is contained in:
parent
6d1cb90723
commit
4515c1d155
4 changed files with 54 additions and 5 deletions
|
@ -1,4 +1,7 @@
|
|||
using NzbDrone.Core.Datastore;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using NzbDrone.Core.Datastore;
|
||||
using NzbDrone.Core.Messaging.Events;
|
||||
|
||||
namespace NzbDrone.Core.Blacklisting
|
||||
|
@ -6,6 +9,7 @@ namespace NzbDrone.Core.Blacklisting
|
|||
public interface IBlacklistRepository : IBasicRepository<Blacklist>
|
||||
{
|
||||
bool Blacklisted(string sourceTitle);
|
||||
List<Blacklist> BlacklistedBySeries(int seriesId);
|
||||
}
|
||||
|
||||
public class BlacklistRepository : BasicRepository<Blacklist>, IBlacklistRepository
|
||||
|
@ -17,7 +21,12 @@ public BlacklistRepository(IDatabase database, IEventAggregator eventAggregator)
|
|||
|
||||
public bool Blacklisted(string sourceTitle)
|
||||
{
|
||||
return Query.Any(e => e.SourceTitle.Contains(sourceTitle));
|
||||
return Query.Where(e => e.SourceTitle.Contains(sourceTitle)).Any();
|
||||
}
|
||||
|
||||
public List<Blacklist> BlacklistedBySeries(int seriesId)
|
||||
{
|
||||
return Query.Where(b => b.SeriesId == seriesId);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -3,6 +3,7 @@
|
|||
using NzbDrone.Core.Download;
|
||||
using NzbDrone.Core.Messaging.Commands;
|
||||
using NzbDrone.Core.Messaging.Events;
|
||||
using NzbDrone.Core.Tv.Events;
|
||||
|
||||
namespace NzbDrone.Core.Blacklisting
|
||||
{
|
||||
|
@ -13,7 +14,7 @@ public interface IBlacklistService
|
|||
void Delete(int id);
|
||||
}
|
||||
|
||||
public class BlacklistService : IBlacklistService, IHandle<DownloadFailedEvent>, IExecute<ClearBlacklistCommand>
|
||||
public class BlacklistService : IBlacklistService, IExecute<ClearBlacklistCommand>, IHandle<DownloadFailedEvent>, IHandle<SeriesDeletedEvent>
|
||||
{
|
||||
private readonly IBlacklistRepository _blacklistRepository;
|
||||
private readonly IRedownloadFailedDownloads _redownloadFailedDownloadService;
|
||||
|
@ -39,6 +40,11 @@ public void Delete(int id)
|
|||
_blacklistRepository.Delete(id);
|
||||
}
|
||||
|
||||
public void Execute(ClearBlacklistCommand message)
|
||||
{
|
||||
_blacklistRepository.Purge();
|
||||
}
|
||||
|
||||
public void Handle(DownloadFailedEvent message)
|
||||
{
|
||||
var blacklist = new Blacklist
|
||||
|
@ -55,9 +61,11 @@ public void Handle(DownloadFailedEvent message)
|
|||
_redownloadFailedDownloadService.Redownload(message.SeriesId, message.EpisodeIds);
|
||||
}
|
||||
|
||||
public void Execute(ClearBlacklistCommand message)
|
||||
public void Handle(SeriesDeletedEvent message)
|
||||
{
|
||||
_blacklistRepository.Purge();
|
||||
var blacklisted = _blacklistRepository.BlacklistedBySeries(message.Series.Id);
|
||||
|
||||
_blacklistRepository.DeleteMany(blacklisted);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -0,0 +1,31 @@
|
|||
using NLog;
|
||||
using NzbDrone.Core.Datastore;
|
||||
|
||||
namespace NzbDrone.Core.Housekeeping.Housekeepers
|
||||
{
|
||||
public class CleanupOrphanedBlacklist : IHousekeepingTask
|
||||
{
|
||||
private readonly IDatabase _database;
|
||||
private readonly Logger _logger;
|
||||
|
||||
public CleanupOrphanedBlacklist(IDatabase database, Logger logger)
|
||||
{
|
||||
_database = database;
|
||||
_logger = logger;
|
||||
}
|
||||
|
||||
public void Clean()
|
||||
{
|
||||
_logger.Trace("Running orphaned blacklist cleanup");
|
||||
|
||||
var mapper = _database.GetDataMapper();
|
||||
|
||||
mapper.ExecuteNonQuery(@"DELETE FROM Blacklist
|
||||
WHERE Id IN (
|
||||
SELECT Blacklist.Id FROM Blacklist
|
||||
LEFT OUTER JOIN Series
|
||||
ON Blacklist.SeriesId = Series.Id
|
||||
WHERE Series.Id IS NULL)");
|
||||
}
|
||||
}
|
||||
}
|
|
@ -283,6 +283,7 @@
|
|||
<Compile Include="Housekeeping\Housekeepers\CleanupOrphanedHistoryItems.cs" />
|
||||
<Compile Include="Housekeeping\Housekeepers\CleanupOrphanedMetadataFiles.cs" />
|
||||
<Compile Include="Housekeeping\Housekeepers\CleanupAdditionalNamingSpecs.cs" />
|
||||
<Compile Include="Housekeeping\Housekeepers\CleanupOrphanedBlacklist.cs" />
|
||||
<Compile Include="Housekeeping\Housekeepers\UpdateCleanTitleForSeries.cs" />
|
||||
<Compile Include="Housekeeping\Housekeepers\CleanupOrphanedEpisodeFiles.cs" />
|
||||
<Compile Include="Housekeeping\Housekeepers\FixFutureRunScheduledTasks.cs" />
|
||||
|
|
Loading…
Reference in a new issue