Blacklist cleanup
Fixed: Cleanup blacklist when series is deleted Fixed: Cleanup blacklist on startup
This commit is contained in:
parent
6d1cb90723
commit
4515c1d155
|
@ -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;
|
using NzbDrone.Core.Messaging.Events;
|
||||||
|
|
||||||
namespace NzbDrone.Core.Blacklisting
|
namespace NzbDrone.Core.Blacklisting
|
||||||
|
@ -6,6 +9,7 @@ namespace NzbDrone.Core.Blacklisting
|
||||||
public interface IBlacklistRepository : IBasicRepository<Blacklist>
|
public interface IBlacklistRepository : IBasicRepository<Blacklist>
|
||||||
{
|
{
|
||||||
bool Blacklisted(string sourceTitle);
|
bool Blacklisted(string sourceTitle);
|
||||||
|
List<Blacklist> BlacklistedBySeries(int seriesId);
|
||||||
}
|
}
|
||||||
|
|
||||||
public class BlacklistRepository : BasicRepository<Blacklist>, IBlacklistRepository
|
public class BlacklistRepository : BasicRepository<Blacklist>, IBlacklistRepository
|
||||||
|
@ -17,7 +21,12 @@ namespace NzbDrone.Core.Blacklisting
|
||||||
|
|
||||||
public bool Blacklisted(string sourceTitle)
|
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.Datastore;
|
||||||
using NzbDrone.Core.Download;
|
using NzbDrone.Core.Download;
|
||||||
using NzbDrone.Core.Messaging.Commands;
|
using NzbDrone.Core.Messaging.Commands;
|
||||||
using NzbDrone.Core.Messaging.Events;
|
using NzbDrone.Core.Messaging.Events;
|
||||||
|
using NzbDrone.Core.Tv.Events;
|
||||||
|
|
||||||
namespace NzbDrone.Core.Blacklisting
|
namespace NzbDrone.Core.Blacklisting
|
||||||
{
|
{
|
||||||
|
@ -13,7 +14,7 @@ namespace NzbDrone.Core.Blacklisting
|
||||||
void Delete(int id);
|
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 IBlacklistRepository _blacklistRepository;
|
||||||
private readonly IRedownloadFailedDownloads _redownloadFailedDownloadService;
|
private readonly IRedownloadFailedDownloads _redownloadFailedDownloadService;
|
||||||
|
@ -39,6 +40,11 @@ namespace NzbDrone.Core.Blacklisting
|
||||||
_blacklistRepository.Delete(id);
|
_blacklistRepository.Delete(id);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void Execute(ClearBlacklistCommand message)
|
||||||
|
{
|
||||||
|
_blacklistRepository.Purge();
|
||||||
|
}
|
||||||
|
|
||||||
public void Handle(DownloadFailedEvent message)
|
public void Handle(DownloadFailedEvent message)
|
||||||
{
|
{
|
||||||
var blacklist = new Blacklist
|
var blacklist = new Blacklist
|
||||||
|
@ -55,9 +61,11 @@ namespace NzbDrone.Core.Blacklisting
|
||||||
_redownloadFailedDownloadService.Redownload(message.SeriesId, message.EpisodeIds);
|
_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\CleanupOrphanedHistoryItems.cs" />
|
||||||
<Compile Include="Housekeeping\Housekeepers\CleanupOrphanedMetadataFiles.cs" />
|
<Compile Include="Housekeeping\Housekeepers\CleanupOrphanedMetadataFiles.cs" />
|
||||||
<Compile Include="Housekeeping\Housekeepers\CleanupAdditionalNamingSpecs.cs" />
|
<Compile Include="Housekeeping\Housekeepers\CleanupAdditionalNamingSpecs.cs" />
|
||||||
|
<Compile Include="Housekeeping\Housekeepers\CleanupOrphanedBlacklist.cs" />
|
||||||
<Compile Include="Housekeeping\Housekeepers\UpdateCleanTitleForSeries.cs" />
|
<Compile Include="Housekeeping\Housekeepers\UpdateCleanTitleForSeries.cs" />
|
||||||
<Compile Include="Housekeeping\Housekeepers\CleanupOrphanedEpisodeFiles.cs" />
|
<Compile Include="Housekeeping\Housekeepers\CleanupOrphanedEpisodeFiles.cs" />
|
||||||
<Compile Include="Housekeeping\Housekeepers\FixFutureRunScheduledTasks.cs" />
|
<Compile Include="Housekeeping\Housekeepers\FixFutureRunScheduledTasks.cs" />
|
||||||
|
|
Loading…
Reference in New Issue