using System.Collections.Generic; using System.Linq; using NLog; using NzbDrone.Core.ThingiProvider; namespace NzbDrone.Core.Indexers { public interface IIndexerFactory : IProviderFactory { } public class IndexerFactory : ProviderFactory, IIndexerFactory { private readonly IIndexerRepository _providerRepository; private readonly IEnumerable _providers; public IndexerFactory(IIndexerRepository providerRepository, IEnumerable providers, Logger logger) : base(providerRepository, providers, logger) { _providerRepository = providerRepository; _providers = providers; } protected override void InitializeProviders() { var definitions = _providers.Where(c => c.Protocol == DownloadProtocol.Usenet) .SelectMany(indexer => indexer.DefaultDefinitions); var currentProviders = All(); var newProviders = definitions.Where(def => currentProviders.All(c => c.Implementation != def.Implementation)).ToList(); if (newProviders.Any()) { _providerRepository.InsertMany(newProviders.Cast().ToList()); } } } }