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 @@ namespace NzbDrone.Console
}
catch (Exception e)
{
Logger.FatalException("EPIC FAIL!", e);
System.Console.ReadLine();
}

View File

@ -29,8 +29,12 @@ namespace NzbDrone.Core.Datastore
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 @@ namespace NzbDrone.Core.Datastore.Migration
{
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 @@ namespace NzbDrone.Core.Datastore.Migration
}
}
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.Data.SQLite;
using System.Linq;
using System.Text.RegularExpressions;
using NLog;
using NzbDrone.Common.Exceptions;
namespace NzbDrone.Core.Datastore.Migration.Framework
{
@ -54,7 +55,14 @@ namespace NzbDrone.Core.Datastore.Migration.Framework
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 @@ namespace NzbDrone.Core.Datastore.Migration.Framework
{
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 @@ namespace NzbDrone.Core.Datastore.Migration.Framework
Connection = _connection
};
return (int)sqLiteCommand.ExecuteScalar();
return (int)sqLiteCommand.ExecuteScalar();
}
private class TableNotFoundException : NzbDroneException
{
public TableNotFoundException(string tableName)
: base("Table [{0}] not found", tableName)
{
}
}
}
}