mirror of
https://github.com/Prowlarr/Prowlarr.git
synced 2025-09-17 17:14:18 +02:00
Fixed: Refresh applicable healthchecks on bulk deletes
This commit is contained in:
@@ -8,6 +8,7 @@ namespace NzbDrone.Core.HealthCheck.Checks
|
|||||||
[CheckOn(typeof(ProviderAddedEvent<IIndexer>))]
|
[CheckOn(typeof(ProviderAddedEvent<IIndexer>))]
|
||||||
[CheckOn(typeof(ProviderUpdatedEvent<IIndexer>))]
|
[CheckOn(typeof(ProviderUpdatedEvent<IIndexer>))]
|
||||||
[CheckOn(typeof(ProviderDeletedEvent<IIndexer>))]
|
[CheckOn(typeof(ProviderDeletedEvent<IIndexer>))]
|
||||||
|
[CheckOn(typeof(ProviderBulkDeletedEvent<IIndexer>))]
|
||||||
[CheckOn(typeof(ProviderStatusChangedEvent<IIndexer>))]
|
[CheckOn(typeof(ProviderStatusChangedEvent<IIndexer>))]
|
||||||
public class IndexerCheck : HealthCheckBase
|
public class IndexerCheck : HealthCheckBase
|
||||||
{
|
{
|
||||||
|
@@ -9,6 +9,7 @@ namespace NzbDrone.Core.HealthCheck.Checks
|
|||||||
{
|
{
|
||||||
[CheckOn(typeof(ProviderUpdatedEvent<IIndexer>))]
|
[CheckOn(typeof(ProviderUpdatedEvent<IIndexer>))]
|
||||||
[CheckOn(typeof(ProviderDeletedEvent<IIndexer>))]
|
[CheckOn(typeof(ProviderDeletedEvent<IIndexer>))]
|
||||||
|
[CheckOn(typeof(ProviderBulkDeletedEvent<IIndexer>))]
|
||||||
[CheckOn(typeof(ProviderStatusChangedEvent<IIndexer>))]
|
[CheckOn(typeof(ProviderStatusChangedEvent<IIndexer>))]
|
||||||
public class IndexerLongTermStatusCheck : HealthCheckBase
|
public class IndexerLongTermStatusCheck : HealthCheckBase
|
||||||
{
|
{
|
||||||
|
@@ -9,6 +9,7 @@ namespace NzbDrone.Core.HealthCheck.Checks
|
|||||||
{
|
{
|
||||||
[CheckOn(typeof(ProviderUpdatedEvent<IIndexer>))]
|
[CheckOn(typeof(ProviderUpdatedEvent<IIndexer>))]
|
||||||
[CheckOn(typeof(ProviderDeletedEvent<IIndexer>))]
|
[CheckOn(typeof(ProviderDeletedEvent<IIndexer>))]
|
||||||
|
[CheckOn(typeof(ProviderBulkDeletedEvent<IIndexer>))]
|
||||||
[CheckOn(typeof(ProviderStatusChangedEvent<IIndexer>))]
|
[CheckOn(typeof(ProviderStatusChangedEvent<IIndexer>))]
|
||||||
public class IndexerStatusCheck : HealthCheckBase
|
public class IndexerStatusCheck : HealthCheckBase
|
||||||
{
|
{
|
||||||
|
@@ -11,6 +11,7 @@ namespace NzbDrone.Core.HealthCheck.Checks
|
|||||||
[CheckOn(typeof(ProviderAddedEvent<IIndexer>))]
|
[CheckOn(typeof(ProviderAddedEvent<IIndexer>))]
|
||||||
[CheckOn(typeof(ProviderUpdatedEvent<IIndexer>))]
|
[CheckOn(typeof(ProviderUpdatedEvent<IIndexer>))]
|
||||||
[CheckOn(typeof(ProviderDeletedEvent<IIndexer>))]
|
[CheckOn(typeof(ProviderDeletedEvent<IIndexer>))]
|
||||||
|
[CheckOn(typeof(ProviderBulkDeletedEvent<IIndexer>))]
|
||||||
public class IndexerVIPCheck : HealthCheckBase
|
public class IndexerVIPCheck : HealthCheckBase
|
||||||
{
|
{
|
||||||
private readonly IIndexerFactory _indexerFactory;
|
private readonly IIndexerFactory _indexerFactory;
|
||||||
|
@@ -11,6 +11,7 @@ namespace NzbDrone.Core.HealthCheck.Checks
|
|||||||
[CheckOn(typeof(ProviderAddedEvent<IIndexer>))]
|
[CheckOn(typeof(ProviderAddedEvent<IIndexer>))]
|
||||||
[CheckOn(typeof(ProviderUpdatedEvent<IIndexer>))]
|
[CheckOn(typeof(ProviderUpdatedEvent<IIndexer>))]
|
||||||
[CheckOn(typeof(ProviderDeletedEvent<IIndexer>))]
|
[CheckOn(typeof(ProviderDeletedEvent<IIndexer>))]
|
||||||
|
[CheckOn(typeof(ProviderBulkDeletedEvent<IIndexer>))]
|
||||||
public class IndexerVIPExpiredCheck : HealthCheckBase
|
public class IndexerVIPExpiredCheck : HealthCheckBase
|
||||||
{
|
{
|
||||||
private readonly IIndexerFactory _indexerFactory;
|
private readonly IIndexerFactory _indexerFactory;
|
||||||
|
@@ -9,6 +9,7 @@ using NzbDrone.Core.ThingiProvider.Events;
|
|||||||
namespace NzbDrone.Core.HealthCheck.Checks
|
namespace NzbDrone.Core.HealthCheck.Checks
|
||||||
{
|
{
|
||||||
[CheckOn(typeof(ProviderDeletedEvent<IIndexer>))]
|
[CheckOn(typeof(ProviderDeletedEvent<IIndexer>))]
|
||||||
|
[CheckOn(typeof(ProviderBulkDeletedEvent<IIndexer>))]
|
||||||
public class NoDefinitionCheck : HealthCheckBase
|
public class NoDefinitionCheck : HealthCheckBase
|
||||||
{
|
{
|
||||||
private readonly IIndexerDefinitionUpdateService _indexerDefinitionUpdateService;
|
private readonly IIndexerDefinitionUpdateService _indexerDefinitionUpdateService;
|
||||||
|
@@ -9,6 +9,7 @@ using NzbDrone.Core.ThingiProvider.Events;
|
|||||||
namespace NzbDrone.Core.HealthCheck.Checks
|
namespace NzbDrone.Core.HealthCheck.Checks
|
||||||
{
|
{
|
||||||
[CheckOn(typeof(ProviderDeletedEvent<IIndexer>))]
|
[CheckOn(typeof(ProviderDeletedEvent<IIndexer>))]
|
||||||
|
[CheckOn(typeof(ProviderBulkDeletedEvent<IIndexer>))]
|
||||||
public class OutdatedDefinitionCheck : HealthCheckBase
|
public class OutdatedDefinitionCheck : HealthCheckBase
|
||||||
{
|
{
|
||||||
private readonly IIndexerDefinitionUpdateService _indexerDefinitionUpdateService;
|
private readonly IIndexerDefinitionUpdateService _indexerDefinitionUpdateService;
|
||||||
|
@@ -10,6 +10,7 @@ using NzbDrone.Core.Indexers.Newznab;
|
|||||||
using NzbDrone.Core.IndexerVersions;
|
using NzbDrone.Core.IndexerVersions;
|
||||||
using NzbDrone.Core.Messaging.Events;
|
using NzbDrone.Core.Messaging.Events;
|
||||||
using NzbDrone.Core.ThingiProvider;
|
using NzbDrone.Core.ThingiProvider;
|
||||||
|
using NzbDrone.Core.ThingiProvider.Events;
|
||||||
|
|
||||||
namespace NzbDrone.Core.Indexers
|
namespace NzbDrone.Core.Indexers
|
||||||
{
|
{
|
||||||
@@ -17,7 +18,6 @@ namespace NzbDrone.Core.Indexers
|
|||||||
{
|
{
|
||||||
List<IIndexer> Enabled(bool filterBlockedIndexers = true);
|
List<IIndexer> Enabled(bool filterBlockedIndexers = true);
|
||||||
List<IIndexer> AllProviders(bool filterBlockedIndexers = true);
|
List<IIndexer> AllProviders(bool filterBlockedIndexers = true);
|
||||||
void DeleteIndexers(List<int> indexerIds);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public class IndexerFactory : ProviderFactory<IIndexer, IndexerDefinition>, IIndexerFactory
|
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)
|
public override ValidationResult Test(IndexerDefinition definition)
|
||||||
{
|
{
|
||||||
var result = base.Test(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(TProviderDefinition definition);
|
||||||
void Update(IEnumerable<TProviderDefinition> definitions);
|
void Update(IEnumerable<TProviderDefinition> definitions);
|
||||||
void Delete(int id);
|
void Delete(int id);
|
||||||
|
void Delete(IEnumerable<int> ids);
|
||||||
IEnumerable<TProviderDefinition> GetDefaultDefinitions();
|
IEnumerable<TProviderDefinition> GetDefaultDefinitions();
|
||||||
IEnumerable<TProviderDefinition> GetPresetDefinitions(TProviderDefinition providerDefinition);
|
IEnumerable<TProviderDefinition> GetPresetDefinitions(TProviderDefinition providerDefinition);
|
||||||
void SetProviderCharacteristics(TProviderDefinition definition);
|
void SetProviderCharacteristics(TProviderDefinition definition);
|
||||||
|
@@ -121,6 +121,13 @@ namespace NzbDrone.Core.ThingiProvider
|
|||||||
_eventAggregator.PublishEvent(new ProviderDeletedEvent<TProvider>(id));
|
_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)
|
public TProvider GetInstance(TProviderDefinition definition)
|
||||||
{
|
{
|
||||||
var type = GetImplementation(definition);
|
var type = GetImplementation(definition);
|
||||||
|
@@ -11,13 +11,13 @@ namespace Prowlarr.Api.V1.Indexers
|
|||||||
[V1ApiController("indexer/editor")]
|
[V1ApiController("indexer/editor")]
|
||||||
public class IndexerEditorController : Controller
|
public class IndexerEditorController : Controller
|
||||||
{
|
{
|
||||||
private readonly IIndexerFactory _indexerService;
|
private readonly IIndexerFactory _indexerFactory;
|
||||||
private readonly IManageCommandQueue _commandQueueManager;
|
private readonly IManageCommandQueue _commandQueueManager;
|
||||||
private readonly IndexerResourceMapper _resourceMapper;
|
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;
|
_commandQueueManager = commandQueueManager;
|
||||||
_resourceMapper = resourceMapper;
|
_resourceMapper = resourceMapper;
|
||||||
}
|
}
|
||||||
@@ -25,7 +25,7 @@ namespace Prowlarr.Api.V1.Indexers
|
|||||||
[HttpPut]
|
[HttpPut]
|
||||||
public IActionResult SaveAll(IndexerEditorResource resource)
|
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)
|
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)
|
foreach (var definition in indexers)
|
||||||
{
|
{
|
||||||
_indexerService.SetProviderCharacteristics(definition);
|
_indexerFactory.SetProviderCharacteristics(definition);
|
||||||
}
|
}
|
||||||
|
|
||||||
return Accepted(_resourceMapper.ToResource(indexers));
|
return Accepted(_resourceMapper.ToResource(indexers));
|
||||||
@@ -74,7 +74,7 @@ namespace Prowlarr.Api.V1.Indexers
|
|||||||
[HttpDelete]
|
[HttpDelete]
|
||||||
public object DeleteIndexers([FromBody] IndexerEditorResource resource)
|
public object DeleteIndexers([FromBody] IndexerEditorResource resource)
|
||||||
{
|
{
|
||||||
_indexerService.DeleteIndexers(resource.IndexerIds);
|
_indexerFactory.Delete(resource.IndexerIds);
|
||||||
|
|
||||||
return new { };
|
return new { };
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user