62 lines
2.0 KiB
C#
62 lines
2.0 KiB
C#
using System.IO;
|
|
using NLog;
|
|
using Nancy.Bootstrapper;
|
|
using NzbDrone.Api;
|
|
using NzbDrone.Api.SignalR;
|
|
using NzbDrone.Common;
|
|
using NzbDrone.Common.Composition;
|
|
using NzbDrone.Common.EnvironmentInfo;
|
|
using NzbDrone.Common.Messaging;
|
|
using NzbDrone.Core.Datastore;
|
|
using NzbDrone.Core.Instrumentation;
|
|
using NzbDrone.Core.Organizer;
|
|
using NzbDrone.Core.RootFolders;
|
|
|
|
namespace NzbDrone
|
|
{
|
|
public class MainAppContainerBuilder : ContainerBuilderBase
|
|
{
|
|
private static readonly Logger Logger = LogManager.GetLogger("ContainerBuilderBase");
|
|
|
|
public static IContainer BuildContainer()
|
|
{
|
|
return new MainAppContainerBuilder().Container;
|
|
}
|
|
|
|
|
|
private MainAppContainerBuilder()
|
|
: base("NzbDrone", "NzbDrone.Common", "NzbDrone.Core", "NzbDrone.Api")
|
|
{
|
|
AutoRegisterImplementations<NzbDronePersistentConnection>();
|
|
|
|
Container.Register(typeof(IBasicRepository<RootFolder>), typeof(BasicRepository<RootFolder>));
|
|
Container.Register(typeof(IBasicRepository<NamingConfig>), typeof(BasicRepository<NamingConfig>));
|
|
|
|
Container.Register<INancyBootstrapper, NancyBootstrapper>();
|
|
|
|
InitDatabase();
|
|
}
|
|
|
|
private void InitDatabase()
|
|
{
|
|
Logger.Info("Registering Database...");
|
|
|
|
//TODO: move this to factory
|
|
var IAppDirectoryInfo = new AppDirectoryInfo();
|
|
var appDataPath = IAppDirectoryInfo.GetAppDataPath();
|
|
|
|
if (!Directory.Exists(appDataPath))
|
|
{
|
|
Directory.CreateDirectory(appDataPath);
|
|
}
|
|
|
|
Container.Register(c => c.Resolve<IDbFactory>().Create(IAppDirectoryInfo.GetNzbDroneDatabase()));
|
|
|
|
Container.Register<ILogRepository>(c =>
|
|
{
|
|
var db = c.Resolve<IDbFactory>().Create(IAppDirectoryInfo.GetLogDatabase(), MigrationType.Log);
|
|
return new LogRepository(db, c.Resolve<IMessageAggregator>());
|
|
});
|
|
}
|
|
}
|
|
} |