mirror of
https://github.com/lidarr/lidarr.git
synced 2025-08-21 14:03:29 -07:00
Marr is almost working.
This commit is contained in:
parent
971053f8a2
commit
ea4f0dbe5f
18 changed files with 300 additions and 126 deletions
|
@ -0,0 +1,39 @@
|
|||
using System.Reflection;
|
||||
using FluentMigrator.Runner;
|
||||
using FluentMigrator.Runner.Initialization;
|
||||
using NzbDrone.Core.Datastore.Migration.Sqlite;
|
||||
|
||||
namespace NzbDrone.Core.Datastore.Migration.Framework
|
||||
{
|
||||
public interface IMigrationController
|
||||
{
|
||||
void MigrateToLatest(string connectionString, MigrationType migrationType);
|
||||
}
|
||||
|
||||
public class MigrationController : IMigrationController
|
||||
{
|
||||
private readonly IAnnouncer _announcer;
|
||||
|
||||
public MigrationController(IAnnouncer announcer)
|
||||
{
|
||||
_announcer = announcer;
|
||||
}
|
||||
|
||||
public void MigrateToLatest(string connectionString, MigrationType migrationType)
|
||||
{
|
||||
var assembly = Assembly.GetExecutingAssembly();
|
||||
|
||||
var migrationContext = new RunnerContext(_announcer)
|
||||
{
|
||||
Namespace = "NzbDrone.Core.Datastore.Migration",
|
||||
ApplicationContext = migrationType
|
||||
};
|
||||
|
||||
var options = new MigrationOptions { PreviewOnly = false, Timeout = 60 };
|
||||
var factory = new MonoSqliteProcessorFactory();
|
||||
var processor = factory.Create(connectionString, _announcer, options);
|
||||
var runner = new MigrationRunner(assembly, migrationContext, processor);
|
||||
runner.MigrateUp(true);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,10 @@
|
|||
using FluentMigrator;
|
||||
|
||||
namespace NzbDrone.Core.Datastore.Migration.Framework
|
||||
{
|
||||
public class MigrationOptions : IMigrationProcessorOptions
|
||||
{
|
||||
public bool PreviewOnly { get; set; }
|
||||
public int Timeout { get; set; }
|
||||
}
|
||||
}
|
15
NzbDrone.Core/Datastore/Migration/Framework/NlogAnnouncer.cs
Normal file
15
NzbDrone.Core/Datastore/Migration/Framework/NlogAnnouncer.cs
Normal file
|
@ -0,0 +1,15 @@
|
|||
using FluentMigrator.Runner.Announcers;
|
||||
using NLog;
|
||||
|
||||
namespace NzbDrone.Core.Datastore.Migration.Framework
|
||||
{
|
||||
public class NlogAnnouncer : Announcer
|
||||
{
|
||||
private static readonly Logger logger = LogManager.GetCurrentClassLogger();
|
||||
|
||||
public override void Write(string message, bool escaped)
|
||||
{
|
||||
logger.Info(message);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,38 @@
|
|||
using System;
|
||||
|
||||
namespace NzbDrone.Core.Datastore.Migration.Framework
|
||||
{
|
||||
public abstract class NzbDroneMigrationBase : FluentMigrator.Migration
|
||||
{
|
||||
protected virtual void MainDbUpgrade()
|
||||
{
|
||||
}
|
||||
|
||||
protected virtual void LogDbUpgrade()
|
||||
{
|
||||
}
|
||||
|
||||
public override void Up()
|
||||
{
|
||||
if ((MigrationType)ApplicationContext == MigrationType.Main)
|
||||
{
|
||||
MainDbUpgrade();
|
||||
}
|
||||
else if ((MigrationType)ApplicationContext == MigrationType.Log)
|
||||
{
|
||||
LogDbUpgrade();
|
||||
}
|
||||
else
|
||||
{
|
||||
LogDbUpgrade();
|
||||
MainDbUpgrade();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public override void Down()
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
}
|
||||
}
|
159
NzbDrone.Core/Datastore/Migration/Migration20130324.cs
Normal file
159
NzbDrone.Core/Datastore/Migration/Migration20130324.cs
Normal file
|
@ -0,0 +1,159 @@
|
|||
using FluentMigrator;
|
||||
using NzbDrone.Core.Datastore.Migration.Framework;
|
||||
|
||||
namespace NzbDrone.Core.Datastore.Migration
|
||||
{
|
||||
[Tags("")]
|
||||
[Migration(20130324)]
|
||||
public class Migration20130324 : NzbDroneMigrationBase
|
||||
{
|
||||
protected override void MainDbUpgrade()
|
||||
{
|
||||
Create.Table("Config")
|
||||
.WithColumn("Id").AsInt32().PrimaryKey().Identity()
|
||||
.WithColumn("Key").AsString().PrimaryKey()
|
||||
.WithColumn("Value").AsString().NotNullable();
|
||||
|
||||
Create.Table("EpisodeFiles")
|
||||
.WithColumn("Id").AsInt32().PrimaryKey().Identity()
|
||||
.WithColumn("SeriesId").AsInt32().NotNullable()
|
||||
.WithColumn("Path").AsString().NotNullable()
|
||||
.WithColumn("Quality").AsInt32().NotNullable()
|
||||
.WithColumn("Proper").AsBoolean().NotNullable()
|
||||
.WithColumn("Size").AsInt64().NotNullable()
|
||||
.WithColumn("DateAdded").AsDateTime().NotNullable()
|
||||
.WithColumn("SeasonNumber").AsInt32().NotNullable()
|
||||
.WithColumn("SceneName").AsString().Nullable()
|
||||
.WithColumn("ReleaseGroup").AsString().Nullable();
|
||||
|
||||
Create.Table("Episodes")
|
||||
.WithColumn("Id").AsInt32().PrimaryKey().Identity()
|
||||
.WithColumn("TvdbId").AsInt32().Nullable()
|
||||
.WithColumn("SeriesId").AsInt32().NotNullable()
|
||||
.WithColumn("SeasonNumber").AsInt32().NotNullable()
|
||||
.WithColumn("EpisodeNumber").AsInt32().NotNullable()
|
||||
.WithColumn("Title").AsString().Nullable()
|
||||
.WithColumn("Overview").AsString().Nullable()
|
||||
.WithColumn("Ignored").AsBoolean().Nullable()
|
||||
.WithColumn("EpisodeFileId").AsInt32().Nullable()
|
||||
.WithColumn("AirDate").AsDateTime().Nullable()
|
||||
.WithColumn("GrabDate").AsDateTime().Nullable()
|
||||
.WithColumn("PostDownloadStatus").AsInt32().Nullable()
|
||||
.WithColumn("AbsoluteEpisodeNumber").AsInt32().Nullable()
|
||||
.WithColumn("SceneAbsoluteEpisodeNumber").AsInt32().Nullable()
|
||||
.WithColumn("SceneSeasonNumber").AsInt32().Nullable()
|
||||
.WithColumn("SceneEpisodeNumber").AsInt32().Nullable();
|
||||
|
||||
Create.Table("ExternalNotificationDefinitions")
|
||||
.WithColumn("Id").AsInt32().PrimaryKey().Identity()
|
||||
.WithColumn("Enable").AsBoolean().NotNullable()
|
||||
.WithColumn("Type").AsString().NotNullable()
|
||||
.WithColumn("Name").AsString().NotNullable();
|
||||
|
||||
Create.Table("History")
|
||||
.WithColumn("Id").AsInt32().PrimaryKey().Identity()
|
||||
.WithColumn("EpisodeId").AsInt32().NotNullable()
|
||||
.WithColumn("SeriesId").AsInt32().NotNullable()
|
||||
.WithColumn("NzbTitle").AsString().NotNullable()
|
||||
.WithColumn("Date").AsDateTime().NotNullable()
|
||||
.WithColumn("Quality").AsInt32().NotNullable()
|
||||
.WithColumn("Proper").AsBoolean().NotNullable()
|
||||
.WithColumn("Indexer").AsString().NotNullable()
|
||||
.WithColumn("NzbInfoUrl").AsString().Nullable()
|
||||
.WithColumn("ReleaseGroup").AsString().Nullable();
|
||||
|
||||
Create.Table("IndexerDefinitions")
|
||||
.WithColumn("Id").AsInt32().PrimaryKey().Identity()
|
||||
.WithColumn("Enable").AsBoolean().NotNullable()
|
||||
.WithColumn("Type").AsString().NotNullable()
|
||||
.WithColumn("Name").AsString().NotNullable();
|
||||
|
||||
Create.Table("JobDefinitions")
|
||||
.WithColumn("Id").AsInt32().PrimaryKey().Identity()
|
||||
.WithColumn("Enable").AsBoolean().NotNullable()
|
||||
.WithColumn("Type").AsString().NotNullable()
|
||||
.WithColumn("Name").AsString().NotNullable()
|
||||
.WithColumn("Interval").AsInt32().NotNullable()
|
||||
.WithColumn("LastExecution").AsDateTime().NotNullable()
|
||||
.WithColumn("Success").AsBoolean().NotNullable();
|
||||
|
||||
Create.Table("NewznabDefinitions")
|
||||
.WithColumn("Id").AsInt32().PrimaryKey().Identity()
|
||||
.WithColumn("Enable").AsBoolean().NotNullable()
|
||||
.WithColumn("Name").AsString().NotNullable()
|
||||
.WithColumn("Url").AsString().NotNullable()
|
||||
.WithColumn("ApiKey").AsString().Nullable()
|
||||
.WithColumn("BuiltIn").AsBoolean().NotNullable();
|
||||
|
||||
Create.Table("QualityProfiles")
|
||||
.WithColumn("Id").AsInt32().PrimaryKey().Identity()
|
||||
.WithColumn("Name").AsString().NotNullable()
|
||||
.WithColumn("Cutoff").AsInt32().NotNullable()
|
||||
.WithColumn("Allowed").AsString().NotNullable();
|
||||
|
||||
Create.Table("QualitySizes")
|
||||
.WithColumn("Id").AsInt32().PrimaryKey().Identity()
|
||||
.WithColumn("QualityId").AsInt32().NotNullable().Unique()
|
||||
.WithColumn("Name").AsString().NotNullable()
|
||||
.WithColumn("MinSize").AsInt32().NotNullable()
|
||||
.WithColumn("MaxSize").AsInt32().NotNullable();
|
||||
|
||||
Create.Table("RootFolders")
|
||||
.WithColumn("Id").AsInt32().PrimaryKey().Identity()
|
||||
.WithColumn("Path").AsString().NotNullable();
|
||||
|
||||
Create.Table("SceneMappings")
|
||||
.WithColumn("Id").AsInt32().PrimaryKey().Identity()
|
||||
.WithColumn("CleanTitle").AsString().NotNullable()
|
||||
.WithColumn("SceneName").AsString().NotNullable()
|
||||
.WithColumn("SeriesId").AsInt32().NotNullable()
|
||||
.WithColumn("SeasonNumber").AsInt32().NotNullable();
|
||||
|
||||
Create.Table("Seasons")
|
||||
.WithColumn("Id").AsInt32().PrimaryKey().Identity()
|
||||
.WithColumn("SeriesId").AsInt32().NotNullable()
|
||||
.WithColumn("SeasonNumber").AsInt32().NotNullable()
|
||||
.WithColumn("Ignored").AsBoolean().NotNullable();
|
||||
|
||||
Create.Table("Series")
|
||||
.WithColumn("Id").AsInt32().PrimaryKey().Identity()
|
||||
.WithColumn("TvdbId").AsInt32().NotNullable()
|
||||
.WithColumn("Title").AsString().NotNullable()
|
||||
.WithColumn("CleanTitle").AsString().NotNullable()
|
||||
.WithColumn("Status").AsInt32().NotNullable()
|
||||
.WithColumn("Overview").AsString().NotNullable()
|
||||
.WithColumn("AirTime").AsString().Nullable()
|
||||
.WithColumn("Language").AsString().NotNullable()
|
||||
.WithColumn("Path").AsString().NotNullable()
|
||||
.WithColumn("Monitored").AsBoolean().NotNullable()
|
||||
.WithColumn("QualityProfileId").AsString().NotNullable()
|
||||
.WithColumn("SeasonFolder").AsBoolean().NotNullable()
|
||||
.WithColumn("LastInfoSync").AsDateTime().Nullable()
|
||||
.WithColumn("LastDiskSync").AsDateTime().Nullable()
|
||||
.WithColumn("Runtime").AsInt32().NotNullable()
|
||||
.WithColumn("BannerUrl").AsString().NotNullable()
|
||||
.WithColumn("SeriesType").AsInt32().NotNullable()
|
||||
.WithColumn("BacklogSetting").AsInt32().NotNullable()
|
||||
.WithColumn("Network").AsString().NotNullable()
|
||||
.WithColumn("CustomStartDate").AsDateTime().Nullable()
|
||||
.WithColumn("UseSceneNumbering").AsBoolean().NotNullable()
|
||||
.WithColumn("TvRageId").AsInt32().Nullable()
|
||||
.WithColumn("TvRageTitle").AsString().NotNullable()
|
||||
.WithColumn("UtcOffSet").AsInt32().NotNullable()
|
||||
.WithColumn("FirstAired").AsDateTime().Nullable();
|
||||
}
|
||||
|
||||
protected override void LogDbUpgrade()
|
||||
{
|
||||
Create.Table("Logs")
|
||||
.WithColumn("LogId").AsInt64().PrimaryKey().Identity()
|
||||
.WithColumn("Message").AsString().NotNullable()
|
||||
.WithColumn("Time").AsDateTime().NotNullable()
|
||||
.WithColumn("Logger").AsString().NotNullable()
|
||||
.WithColumn("Method").AsString().NotNullable()
|
||||
.WithColumn("Exception").AsString().Nullable()
|
||||
.WithColumn("ExceptionType").AsString().Nullable()
|
||||
.WithColumn("Level").AsString().NotNullable();
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,18 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using FluentMigrator.Runner.Processors;
|
||||
|
||||
namespace NzbDrone.Core.Datastore.Migration.Sqlite
|
||||
{
|
||||
public class MonoSqliteDbFactory : ReflectionBasedDbFactory
|
||||
{
|
||||
public MonoSqliteDbFactory()
|
||||
: base("Mono.Data.Sqlite", "Mono.Data.Sqlite.SqliteFactory")
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
|
@ -0,0 +1,18 @@
|
|||
using FluentMigrator;
|
||||
using FluentMigrator.Runner;
|
||||
using FluentMigrator.Runner.Generators.SQLite;
|
||||
using FluentMigrator.Runner.Processors;
|
||||
using FluentMigrator.Runner.Processors.Sqlite;
|
||||
|
||||
namespace NzbDrone.Core.Datastore.Migration.Sqlite
|
||||
{
|
||||
public class MonoSqliteProcessorFactory : MigrationProcessorFactory
|
||||
{
|
||||
public override IMigrationProcessor Create(string connectionString, IAnnouncer announcer, IMigrationProcessorOptions options)
|
||||
{
|
||||
var factory = new MonoSqliteDbFactory();
|
||||
var connection = factory.CreateConnection(connectionString);
|
||||
return new SqliteProcessor(connection, new SqliteGenerator(), announcer, options, factory);
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue