diff --git a/NzbDrone.Core.Test/IndexerProviderTest.cs b/NzbDrone.Core.Test/IndexerProviderTest.cs index aab9c7056..b50afa716 100644 --- a/NzbDrone.Core.Test/IndexerProviderTest.cs +++ b/NzbDrone.Core.Test/IndexerProviderTest.cs @@ -29,7 +29,7 @@ namespace NzbDrone.Core.Test { var mocker = new AutoMoqer(); - mocker.SetConstant(MockLib.GetEmptyRepository()); + mocker.SetConstant(MockLib.GetEmptyDatabase()); //Act var indexerProvider = mocker.Resolve(); @@ -51,7 +51,7 @@ namespace NzbDrone.Core.Test { var mocker = new AutoMoqer(); - mocker.SetConstant(MockLib.GetEmptyRepository()); + mocker.SetConstant(MockLib.GetEmptyDatabase()); //Act var indexerProvider = mocker.Resolve(); diff --git a/NzbDrone.Core/Datastore/Migrations/Migration.cs b/NzbDrone.Core/Datastore/Migrations/Migration.cs index 0b4f50087..9006496da 100644 --- a/NzbDrone.Core/Datastore/Migrations/Migration.cs +++ b/NzbDrone.Core/Datastore/Migrations/Migration.cs @@ -37,122 +37,134 @@ namespace NzbDrone.Core.Datastore.Migrations { public override void Up() { - Database.AddTable("Series", "SQLite", new[] - { - new Column("SeriesId", DbType.Int32, ColumnProperty.PrimaryKey), - new Column("Title", DbType.String, ColumnProperty.NotNull, String.Empty), - new Column("CleanTitle", DbType.String, ColumnProperty.NotNull, String.Empty), - new Column("Status", DbType.String, ColumnProperty.Null), - new Column("Overview", DbType.String, ColumnProperty.NotNull, String.Empty), - new Column("AirsDayOfWeek", DbType.Int16, ColumnProperty.Null), - new Column("AirTimes", DbType.String, ColumnProperty.NotNull, String.Empty), - new Column("Language", DbType.String, ColumnProperty.NotNull, String.Empty), - new Column("Path", DbType.String, ColumnProperty.NotNull), - new Column("Monitored", DbType.Boolean, ColumnProperty.NotNull), - new Column("QualityProfileId", DbType.Int16, ColumnProperty.NotNull), - new Column("SeasonFolder", DbType.Boolean, ColumnProperty.NotNull), - new Column("LastInfoSync", DbType.DateTime, ColumnProperty.Null), - new Column("LastDiskSync", DbType.DateTime, ColumnProperty.Null) - }); - - Database.AddTable("Episodes", "SQLite", new[] - { - new Column("EpisodeId", DbType.Int32, ColumnProperty.PrimaryKeyWithIdentity), - new Column("TvDbEpisodeId", DbType.Int32, ColumnProperty.Null), - new Column("SeriesId", DbType.Int32, ColumnProperty.NotNull), - new Column("SeasonNumber", DbType.Int16, ColumnProperty.NotNull), - new Column("EpisodeNumber", DbType.Int16, ColumnProperty.NotNull), - new Column("Title", DbType.String, ColumnProperty.NotNull, String.Empty), - new Column("Overview", DbType.String, ColumnProperty.NotNull, String.Empty), - new Column("Ignored", DbType.Boolean, ColumnProperty.NotNull, false), - new Column("EpisodeFileId", DbType.Int32, ColumnProperty.Null), - new Column("AirDate", DbType.DateTime, ColumnProperty.Null), - new Column("GrabDate", DbType.DateTime, ColumnProperty.Null) - }); - - - Database.AddTable("EpisodeFiles", "SQLite", new[] - { - new Column("EpisodeFileId", DbType.Int32, - ColumnProperty.PrimaryKeyWithIdentity), - new Column("SeriesId", DbType.Int32, ColumnProperty.NotNull), - new Column("Path", DbType.String, ColumnProperty.NotNull), - new Column("Quality", DbType.Int16, ColumnProperty.NotNull), - new Column("Proper", DbType.Int16, ColumnProperty.NotNull), - new Column("Size", DbType.Int64, ColumnProperty.NotNull), - new Column("DateAdded", DbType.DateTime, ColumnProperty.NotNull), - new Column("SeasonNumber", DbType.Int16, ColumnProperty.NotNull) - }); - - - Database.AddTable("Config", "SQLite", new[] - { - new Column("Key", DbType.String, ColumnProperty.PrimaryKey), - new Column("Value", DbType.String, ColumnProperty.NotNull) - }); - - Database.AddTable("History", "SQLite", new[] - { - new Column("HistoryId", DbType.Int64, ColumnProperty.PrimaryKey), - new Column("EpisodeId", DbType.Int32, ColumnProperty.NotNull), - new Column("SeriesId", DbType.Int32, ColumnProperty.NotNull), - new Column("NzbTitle", DbType.String, ColumnProperty.NotNull), - new Column("Date", DbType.DateTime, ColumnProperty.NotNull), - new Column("Quality", DbType.Int16, ColumnProperty.NotNull), - new Column("IsProper", DbType.Boolean, ColumnProperty.NotNull), - new Column("Indexer", DbType.String, ColumnProperty.NotNull) - }); - - Database.AddTable("RootDirs", "SQLite", new[] - { - new Column("Id", DbType.Int32, ColumnProperty.PrimaryKey), - new Column("Path", DbType.String, ColumnProperty.NotNull) - }); - - Database.AddTable("ExternalNotificationSettings", "SQLite", new[] - { - new Column("Id", DbType.Int32, ColumnProperty.PrimaryKey), - new Column("Enabled", DbType.Boolean, ColumnProperty.NotNull) - , - new Column("NotifierName", DbType.String, - ColumnProperty.NotNull), - new Column("Name", DbType.String, ColumnProperty.NotNull) - }); - - Database.AddTable("JobSettings", "SQLite", new[] - { - new Column("Id", DbType.Int32, ColumnProperty.PrimaryKey), - new Column("Enable", DbType.Boolean, ColumnProperty.NotNull), - new Column("TypeName", DbType.String, ColumnProperty.NotNull), - new Column("Name", DbType.String, ColumnProperty.NotNull), - new Column("Interval", DbType.Int32, ColumnProperty.NotNull), - new Column("LastExecution", DbType.DateTime, ColumnProperty.NotNull), - new Column("Success", DbType.Boolean, ColumnProperty.NotNull) - }); - - Database.AddTable("QualityProfiles", "SQLite", new[] - { - new Column("QualityProfileId", DbType.Int32, ColumnProperty.PrimaryKey), - new Column("Name", DbType.String, ColumnProperty.NotNull), - new Column("Cutoff", DbType.Int32, ColumnProperty.NotNull), - new Column("SonicAllowed", DbType.String, ColumnProperty.NotNull), - }); - - Database.AddTable("Logs", "SQLite", new[] - { - new Column("LogId", DbType.Int64, ColumnProperty.PrimaryKey), - new Column("Message", DbType.String, ColumnProperty.NotNull), - new Column("Time", DbType.DateTime, ColumnProperty.NotNull), - new Column("Logger", DbType.String, ColumnProperty.NotNull), - new Column("Method", DbType.String, ColumnProperty.NotNull), - new Column("Exception", DbType.String, ColumnProperty.Null), - new Column("ExceptionType", DbType.String, ColumnProperty.Null), - new Column("Level", DbType.String, ColumnProperty.NotNull) - }); + Database.AddTable("Series", new[] + { + new Column("SeriesId", DbType.Int32, ColumnProperty.PrimaryKey), + new Column("Title", DbType.String, ColumnProperty.NotNull, String.Empty), + new Column("CleanTitle", DbType.String, ColumnProperty.NotNull, String.Empty), + new Column("Status", DbType.String, ColumnProperty.Null), + new Column("Overview", DbType.String, ColumnProperty.NotNull, String.Empty), + new Column("AirsDayOfWeek", DbType.Int16, ColumnProperty.Null), + new Column("AirTimes", DbType.String, ColumnProperty.NotNull, String.Empty), + new Column("Language", DbType.String, ColumnProperty.NotNull, String.Empty), + new Column("Path", DbType.String, ColumnProperty.NotNull), + new Column("Monitored", DbType.Boolean, ColumnProperty.NotNull), + new Column("QualityProfileId", DbType.Int16, ColumnProperty.NotNull), + new Column("SeasonFolder", DbType.Boolean, ColumnProperty.NotNull), + new Column("LastInfoSync", DbType.DateTime, ColumnProperty.Null), + new Column("LastDiskSync", DbType.DateTime, ColumnProperty.Null) + }); + + Database.AddTable("Episodes", new[] + { + new Column("EpisodeId", DbType.Int32, ColumnProperty.PrimaryKeyWithIdentity), + new Column("TvDbEpisodeId", DbType.Int32, ColumnProperty.Null), + new Column("SeriesId", DbType.Int32, ColumnProperty.NotNull), + new Column("SeasonNumber", DbType.Int16, ColumnProperty.NotNull), + new Column("EpisodeNumber", DbType.Int16, ColumnProperty.NotNull), + new Column("Title", DbType.String, ColumnProperty.NotNull, String.Empty), + new Column("Overview", DbType.String, ColumnProperty.NotNull, String.Empty), + new Column("Ignored", DbType.Boolean, ColumnProperty.NotNull, false), + new Column("EpisodeFileId", DbType.Int32, ColumnProperty.Null), + new Column("AirDate", DbType.DateTime, ColumnProperty.Null), + new Column("GrabDate", DbType.DateTime, ColumnProperty.Null) + }); + + + Database.AddTable("EpisodeFiles", new[] + { + new Column("EpisodeFileId", DbType.Int32, + ColumnProperty.PrimaryKeyWithIdentity), + new Column("SeriesId", DbType.Int32, ColumnProperty.NotNull), + new Column("Path", DbType.String, ColumnProperty.NotNull), + new Column("Quality", DbType.Int16, ColumnProperty.NotNull), + new Column("Proper", DbType.Int16, ColumnProperty.NotNull), + new Column("Size", DbType.Int64, ColumnProperty.NotNull), + new Column("DateAdded", DbType.DateTime, ColumnProperty.NotNull), + new Column("SeasonNumber", DbType.Int16, ColumnProperty.NotNull) + }); + + + Database.AddTable("Config", new[] + { + new Column("Key", DbType.String, ColumnProperty.PrimaryKey), + new Column("Value", DbType.String, ColumnProperty.NotNull) + }); + + Database.AddTable("SceneMappings", new[] + { + new Column("CleanTitle", DbType.String, ColumnProperty.PrimaryKey), + new Column("SeriesId", DbType.Int32, ColumnProperty.NotNull), + new Column("SceneName", DbType.String, ColumnProperty.NotNull) + }); + + Database.AddTable("History", new[] + { + new Column("HistoryId", DbType.Int64, ColumnProperty.PrimaryKey), + new Column("EpisodeId", DbType.Int32, ColumnProperty.NotNull), + new Column("SeriesId", DbType.Int32, ColumnProperty.NotNull), + new Column("NzbTitle", DbType.String, ColumnProperty.NotNull), + new Column("Date", DbType.DateTime, ColumnProperty.NotNull), + new Column("Quality", DbType.Int16, ColumnProperty.NotNull), + new Column("IsProper", DbType.Boolean, ColumnProperty.NotNull), + new Column("Indexer", DbType.String, ColumnProperty.NotNull) + }); + + Database.AddTable("RootDirs", new[] + { + new Column("Id", DbType.Int32, ColumnProperty.PrimaryKey), + new Column("Path", DbType.String, ColumnProperty.NotNull) + }); + + Database.AddTable("ExternalNotificationSettings", new[] + { + new Column("Id", DbType.Int32, ColumnProperty.PrimaryKey), + new Column("Enabled", DbType.Boolean, ColumnProperty.NotNull), + new Column("NotifierName", DbType.String, ColumnProperty.NotNull), + new Column("Name", DbType.String, ColumnProperty.NotNull) + }); + + Database.AddTable("JobSettings", new[] + { + new Column("Id", DbType.Int32, ColumnProperty.PrimaryKey), + new Column("Enable", DbType.Boolean, ColumnProperty.NotNull), + new Column("TypeName", DbType.String, ColumnProperty.NotNull), + new Column("Name", DbType.String, ColumnProperty.NotNull), + new Column("Interval", DbType.Int32, ColumnProperty.NotNull), + new Column("LastExecution", DbType.DateTime, ColumnProperty.NotNull), + new Column("Success", DbType.Boolean, ColumnProperty.NotNull) + }); + + Database.AddTable("QualityProfiles", new[] + { + new Column("QualityProfileId", DbType.Int32, ColumnProperty.PrimaryKey), + new Column("Name", DbType.String, ColumnProperty.NotNull), + new Column("Cutoff", DbType.Int32, ColumnProperty.NotNull), + new Column("SonicAllowed", DbType.String, ColumnProperty.NotNull), + }); + + Database.AddTable("Logs", new[] + { + new Column("LogId", DbType.Int64, ColumnProperty.PrimaryKey), + new Column("Message", DbType.String, ColumnProperty.NotNull), + new Column("Time", DbType.DateTime, ColumnProperty.NotNull), + new Column("Logger", DbType.String, ColumnProperty.NotNull), + new Column("Method", DbType.String, ColumnProperty.NotNull), + new Column("Exception", DbType.String, ColumnProperty.Null), + new Column("ExceptionType", DbType.String, ColumnProperty.Null), + new Column("Level", DbType.String, ColumnProperty.NotNull) + }); + + Database.AddTable("IndexerSettings", new[] + { + new Column("Id", DbType.Int32, ColumnProperty.PrimaryKey), + new Column("Enable", DbType.Boolean, ColumnProperty.NotNull), + new Column("IndexProviderType", DbType.String, ColumnProperty.NotNull), + new Column("Name", DbType.String, ColumnProperty.NotNull), + }); } - public override void Down() { throw new NotImplementedException(); diff --git a/NzbDrone.Core/Providers/IndexerProvider.cs b/NzbDrone.Core/Providers/IndexerProvider.cs index d0948a2ec..48ad40431 100644 --- a/NzbDrone.Core/Providers/IndexerProvider.cs +++ b/NzbDrone.Core/Providers/IndexerProvider.cs @@ -5,21 +5,21 @@ using Ninject; using NLog; using NzbDrone.Core.Providers.Indexer; using NzbDrone.Core.Repository; -using SubSonic.Repository; +using PetaPoco; namespace NzbDrone.Core.Providers { public class IndexerProvider { private static readonly Logger Logger = LogManager.GetCurrentClassLogger(); - private readonly IRepository _repository; + private readonly IDatabase _database; private IList _indexers = new List(); [Inject] - public IndexerProvider(IRepository repository) + public IndexerProvider(IDatabase database) { - _repository = repository; + _database = database; } public IndexerProvider() @@ -35,7 +35,7 @@ namespace NzbDrone.Core.Providers public virtual List GetAllISettings() { - return _repository.All().ToList(); + return _database.Fetch(); } public virtual void SaveSettings(IndexerSetting settings) @@ -43,18 +43,18 @@ namespace NzbDrone.Core.Providers if (settings.Id == 0) { Logger.Debug("Adding Indexer settings for {0}", settings.Name); - _repository.Add(settings); + _database.Insert(settings); } else { Logger.Debug("Updating Indexer settings for {0}", settings.Name); - _repository.Update(settings); + _database.Update(settings); } } public virtual IndexerSetting GetSettings(Type type) { - return _repository.Single(s => s.IndexProviderType == type.ToString()); + return _database.Single("WHERE IndexProviderType = @0", type.ToString()); } public virtual void InitializeIndexers(IList indexers) diff --git a/NzbDrone.Core/Repository/IndexerSetting.cs b/NzbDrone.Core/Repository/IndexerSetting.cs index 471552728..b1a8ad1be 100644 --- a/NzbDrone.Core/Repository/IndexerSetting.cs +++ b/NzbDrone.Core/Repository/IndexerSetting.cs @@ -1,11 +1,12 @@ using System; -using SubSonic.SqlGeneration.Schema; +using PetaPoco; namespace NzbDrone.Core.Repository { + [TableName("IndexerSettings")] + [PrimaryKey("Id", autoIncrement = true)] public class IndexerSetting { - [SubSonicPrimaryKey(true)] public int Id { get; set; } public Boolean Enable { get; set; }