1
0
Fork 0
mirror of https://github.com/lidarr/Lidarr synced 2024-12-24 16:51:58 +00:00

better migration error handling.

This commit is contained in:
Keivan Beigi 2013-09-04 18:03:41 -07:00 committed by kay.one
parent 9390a00f80
commit 47d9b4d5bb
4 changed files with 29 additions and 8 deletions

View file

@ -24,6 +24,7 @@ public static void Main(string[] args)
}
catch (Exception e)
{
Logger.FatalException("EPIC FAIL!", e);
System.Console.ReadLine();
}

View file

@ -29,8 +29,12 @@ static DbFactory()
public static void RegisterDatabase(IContainer container)
{
container.Resolve<IDbFactory>().Create();
container.Register(c => c.Resolve<IDbFactory>().Create());
container.Resolve<IDbFactory>().Create(MigrationType.Log);
container.Register<ILogRepository>(c =>
{
var db = c.Resolve<IDbFactory>().Create(MigrationType.Log);

View file

@ -11,8 +11,8 @@ protected override void MainDbUpgrade()
{
using (var transaction = MigrationHelper.BeginTransaction())
{
RemoveDuplicateSeries("TvdbId");
RemoveDuplicateSeries("TitleSlug");
RemoveDuplicateSeries<int>("TvdbId");
RemoveDuplicateSeries<string>("TitleSlug");
var duplicatedEpisodes = MigrationHelper.GetDuplicates<int>("Episodes", "TvDbEpisodeId");
@ -28,9 +28,9 @@ protected override void MainDbUpgrade()
}
}
private void RemoveDuplicateSeries(string field)
private void RemoveDuplicateSeries<T>(string field)
{
var duplicatedSeries = MigrationHelper.GetDuplicates<int>("Series", field);
var duplicatedSeries = MigrationHelper.GetDuplicates<T>("Series", field);
foreach (var duplicate in duplicatedSeries)
{

View file

@ -4,6 +4,7 @@
using System.Linq;
using System.Text.RegularExpressions;
using NLog;
using NzbDrone.Common.Exceptions;
namespace NzbDrone.Core.Datastore.Migration.Framework
{
@ -54,7 +55,14 @@ private string GetOriginalSql(string tableName)
command.Connection = _connection;
return (string)command.ExecuteScalar();
var sql = (string)command.ExecuteScalar();
if (string.IsNullOrWhiteSpace(sql))
{
throw new TableNotFoundException(tableName);
}
return sql;
}
public Dictionary<String, SQLiteColumn> GetColumns(string tableName)
@ -163,7 +171,7 @@ public IEnumerable<IGrouping<T, KeyValuePair<int, T>>> GetDuplicates<T>(string t
{
while (reader.Read())
{
result.Add(new KeyValuePair<int, T>(reader.GetInt16(0), (T)Convert.ChangeType(reader[1], typeof(T))));
result.Add(new KeyValuePair<int, T>(reader.GetInt32(0), (T)Convert.ChangeType(reader[1], typeof(T))));
}
}
@ -207,10 +215,18 @@ public int ExecuteScalar(string command, params string[] args)
Connection = _connection
};
return (int)sqLiteCommand.ExecuteScalar();
return (int)sqLiteCommand.ExecuteScalar();
}
private class TableNotFoundException : NzbDroneException
{
public TableNotFoundException(string tableName)
: base("Table [{0}] not found", tableName)
{
}
}
}
}