Fixed: Refresh applicable healthchecks on bulk deletes

pull/1234/head
Qstick 2 years ago
parent 9227efdb65
commit a8234c9ce0

@ -8,6 +8,7 @@ namespace NzbDrone.Core.HealthCheck.Checks
[CheckOn(typeof(ProviderAddedEvent<IIndexer>))]
[CheckOn(typeof(ProviderUpdatedEvent<IIndexer>))]
[CheckOn(typeof(ProviderDeletedEvent<IIndexer>))]
[CheckOn(typeof(ProviderBulkDeletedEvent<IIndexer>))]
[CheckOn(typeof(ProviderStatusChangedEvent<IIndexer>))]
public class IndexerCheck : HealthCheckBase
{

@ -9,6 +9,7 @@ namespace NzbDrone.Core.HealthCheck.Checks
{
[CheckOn(typeof(ProviderUpdatedEvent<IIndexer>))]
[CheckOn(typeof(ProviderDeletedEvent<IIndexer>))]
[CheckOn(typeof(ProviderBulkDeletedEvent<IIndexer>))]
[CheckOn(typeof(ProviderStatusChangedEvent<IIndexer>))]
public class IndexerLongTermStatusCheck : HealthCheckBase
{

@ -9,6 +9,7 @@ namespace NzbDrone.Core.HealthCheck.Checks
{
[CheckOn(typeof(ProviderUpdatedEvent<IIndexer>))]
[CheckOn(typeof(ProviderDeletedEvent<IIndexer>))]
[CheckOn(typeof(ProviderBulkDeletedEvent<IIndexer>))]
[CheckOn(typeof(ProviderStatusChangedEvent<IIndexer>))]
public class IndexerStatusCheck : HealthCheckBase
{

@ -11,6 +11,7 @@ namespace NzbDrone.Core.HealthCheck.Checks
[CheckOn(typeof(ProviderAddedEvent<IIndexer>))]
[CheckOn(typeof(ProviderUpdatedEvent<IIndexer>))]
[CheckOn(typeof(ProviderDeletedEvent<IIndexer>))]
[CheckOn(typeof(ProviderBulkDeletedEvent<IIndexer>))]
public class IndexerVIPCheck : HealthCheckBase
{
private readonly IIndexerFactory _indexerFactory;

@ -11,6 +11,7 @@ namespace NzbDrone.Core.HealthCheck.Checks
[CheckOn(typeof(ProviderAddedEvent<IIndexer>))]
[CheckOn(typeof(ProviderUpdatedEvent<IIndexer>))]
[CheckOn(typeof(ProviderDeletedEvent<IIndexer>))]
[CheckOn(typeof(ProviderBulkDeletedEvent<IIndexer>))]
public class IndexerVIPExpiredCheck : HealthCheckBase
{
private readonly IIndexerFactory _indexerFactory;

@ -9,6 +9,7 @@ using NzbDrone.Core.ThingiProvider.Events;
namespace NzbDrone.Core.HealthCheck.Checks
{
[CheckOn(typeof(ProviderDeletedEvent<IIndexer>))]
[CheckOn(typeof(ProviderBulkDeletedEvent<IIndexer>))]
public class NoDefinitionCheck : HealthCheckBase
{
private readonly IIndexerDefinitionUpdateService _indexerDefinitionUpdateService;

@ -9,6 +9,7 @@ using NzbDrone.Core.ThingiProvider.Events;
namespace NzbDrone.Core.HealthCheck.Checks
{
[CheckOn(typeof(ProviderDeletedEvent<IIndexer>))]
[CheckOn(typeof(ProviderBulkDeletedEvent<IIndexer>))]
public class OutdatedDefinitionCheck : HealthCheckBase
{
private readonly IIndexerDefinitionUpdateService _indexerDefinitionUpdateService;

@ -10,6 +10,7 @@ using NzbDrone.Core.Indexers.Newznab;
using NzbDrone.Core.IndexerVersions;
using NzbDrone.Core.Messaging.Events;
using NzbDrone.Core.ThingiProvider;
using NzbDrone.Core.ThingiProvider.Events;
namespace NzbDrone.Core.Indexers
{
@ -17,7 +18,6 @@ namespace NzbDrone.Core.Indexers
{
List<IIndexer> Enabled(bool filterBlockedIndexers = true);
List<IIndexer> AllProviders(bool filterBlockedIndexers = true);
void DeleteIndexers(List<int> indexerIds);
}
public class IndexerFactory : ProviderFactory<IIndexer, IndexerDefinition>, IIndexerFactory
@ -256,18 +256,6 @@ namespace NzbDrone.Core.Indexers
}
}
public void DeleteIndexers(List<int> indexerIds)
{
var indexersToDelete = _providerRepository.Get(indexerIds).ToList();
_providerRepository.DeleteMany(indexerIds);
foreach (var indexer in indexersToDelete)
{
_logger.Info("Deleted indexer {0}", indexer.Name);
}
}
public override ValidationResult Test(IndexerDefinition definition)
{
var result = base.Test(definition);

@ -0,0 +1,16 @@
using System.Collections;
using System.Collections.Generic;
using NzbDrone.Common.Messaging;
namespace NzbDrone.Core.ThingiProvider.Events
{
public class ProviderBulkDeletedEvent<TProvider> : IEvent
{
public IEnumerable<int> ProviderIds { get; private set; }
public ProviderBulkDeletedEvent(IEnumerable<int> ids)
{
ProviderIds = ids;
}
}
}

@ -14,6 +14,7 @@ namespace NzbDrone.Core.ThingiProvider
void Update(TProviderDefinition definition);
void Update(IEnumerable<TProviderDefinition> definitions);
void Delete(int id);
void Delete(IEnumerable<int> ids);
IEnumerable<TProviderDefinition> GetDefaultDefinitions();
IEnumerable<TProviderDefinition> GetPresetDefinitions(TProviderDefinition providerDefinition);
void SetProviderCharacteristics(TProviderDefinition definition);

@ -121,6 +121,13 @@ namespace NzbDrone.Core.ThingiProvider
_eventAggregator.PublishEvent(new ProviderDeletedEvent<TProvider>(id));
}
public void Delete(IEnumerable<int> ids)
{
_providerRepository.DeleteMany(ids);
_eventAggregator.PublishEvent(new ProviderBulkDeletedEvent<TProvider>(ids));
}
public TProvider GetInstance(TProviderDefinition definition)
{
var type = GetImplementation(definition);

@ -11,13 +11,13 @@ namespace Prowlarr.Api.V1.Indexers
[V1ApiController("indexer/editor")]
public class IndexerEditorController : Controller
{
private readonly IIndexerFactory _indexerService;
private readonly IIndexerFactory _indexerFactory;
private readonly IManageCommandQueue _commandQueueManager;
private readonly IndexerResourceMapper _resourceMapper;
public IndexerEditorController(IIndexerFactory indexerService, IManageCommandQueue commandQueueManager, IndexerResourceMapper resourceMapper)
public IndexerEditorController(IIndexerFactory indexerFactory, IManageCommandQueue commandQueueManager, IndexerResourceMapper resourceMapper)
{
_indexerService = indexerService;
_indexerFactory = indexerFactory;
_commandQueueManager = commandQueueManager;
_resourceMapper = resourceMapper;
}
@ -25,7 +25,7 @@ namespace Prowlarr.Api.V1.Indexers
[HttpPut]
public IActionResult SaveAll(IndexerEditorResource resource)
{
var indexersToUpdate = _indexerService.AllProviders(false).Select(x => (IndexerDefinition)x.Definition).Where(d => resource.IndexerIds.Contains(d.Id));
var indexersToUpdate = _indexerFactory.AllProviders(false).Select(x => (IndexerDefinition)x.Definition).Where(d => resource.IndexerIds.Contains(d.Id));
foreach (var indexer in indexersToUpdate)
{
@ -59,13 +59,13 @@ namespace Prowlarr.Api.V1.Indexers
}
}
_indexerService.Update(indexersToUpdate);
_indexerFactory.Update(indexersToUpdate);
var indexers = _indexerService.All();
var indexers = _indexerFactory.All();
foreach (var definition in indexers)
{
_indexerService.SetProviderCharacteristics(definition);
_indexerFactory.SetProviderCharacteristics(definition);
}
return Accepted(_resourceMapper.ToResource(indexers));
@ -74,7 +74,7 @@ namespace Prowlarr.Api.V1.Indexers
[HttpDelete]
public object DeleteIndexers([FromBody] IndexerEditorResource resource)
{
_indexerService.DeleteIndexers(resource.IndexerIds);
_indexerFactory.Delete(resource.IndexerIds);
return new { };
}

Loading…
Cancel
Save