@ -3,6 +3,7 @@ using System.Collections.Generic;
using System.Linq ;
using NLog ;
using NzbDrone.Core.Indexers.Providers ;
using NzbDrone.Core.Lifecycle ;
using PetaPoco ;
namespace NzbDrone.Core.Indexers
@ -15,55 +16,23 @@ namespace NzbDrone.Core.Indexers
Indexer GetSettings ( Type type ) ;
}
public class IndexerService : IIndexerService
public class IndexerService : IIndexerService , IInitializable
{
private readonly IIndexerRepository _indexerRepository ;
private static readonly Logger Logger = LogManager . GetCurrentClassLogger ( ) ;
private readonly Logger _logger ;
private IList < IndexerBase > _indexers ;
public IndexerService ( IIndexerRepository indexerRepository , IEnumerable < IndexerBase > indexers )
public IndexerService ( IIndexerRepository indexerRepository , IEnumerable < IndexerBase > indexers , Logger logger )
{
_indexerRepository = indexerRepository ;
_logger = logger ;
_indexers = indexers . ToList ( ) ;
InitializeIndexers ( ) ;
}
public List < Indexer > All ( )
{
return _indexerRepository . All ( ) . ToList ( ) ;
}
public List < IndexerBase > GetEnabledIndexers ( )
{
var all = All ( ) ;
return _indexers . Where ( i = > all . Exists ( c = > c . Type = = i . GetType ( ) . ToString ( ) & & c . Enable ) ) . ToList ( ) ;
}
public void SaveSettings ( Indexer indexer )
{
if ( indexer . OID = = 0 )
{
Logger . Debug ( "Adding Indexer definitions for {0}" , indexer . Name ) ;
_indexerRepository . Insert ( indexer ) ;
}
else
{
Logger . Debug ( "Updating Indexer definitions for {0}" , indexer . Name ) ;
_indexerRepository . Update ( indexer ) ;
}
}
public Indexer GetSettings ( Type type )
{
return _indexerRepository . Find ( type ) ;
}
p rivate void InitializeIndexers ( )
public void Init ( )
{
Logger . Debug ( "Initializing indexers. Count {0}" , _indexers . Count ) ;
_logger . Debug ( "Initializing indexers. Count {0}" , _indexers . Count ) ;
var currentIndexers = All ( ) ;
@ -79,9 +48,32 @@ namespace NzbDrone.Core.Indexers
Name = indexerLocal . Name
} ;
SaveSettings ( settings ) ;
_indexerRepository. Insert ( settings ) ;
}
}
}
public List < Indexer > All ( )
{
return _indexerRepository . All ( ) . ToList ( ) ;
}
public List < IndexerBase > GetEnabledIndexers ( )
{
var all = All ( ) ;
return _indexers . Where ( i = > all . Exists ( c = > c . Type = = i . GetType ( ) . ToString ( ) & & c . Enable ) ) . ToList ( ) ;
}
public void SaveSettings ( Indexer indexer )
{
//Todo: This will be used in the API
_logger . Debug ( "Upserting Indexer definitions for {0}" , indexer . Name ) ;
_indexerRepository . Upsert ( indexer ) ;
}
public Indexer GetSettings ( Type type )
{
return _indexerRepository . Find ( type ) ;
}
}
}