1
0
mirror of https://github.com/Sonarr/Sonarr.git synced 2024-10-31 07:52:37 +01:00

Added db migration to deal with the settings changes.

This commit is contained in:
Taloth Saldono 2014-05-25 23:58:41 +02:00
parent 67dcfad5dc
commit ab154d924e
7 changed files with 105 additions and 15 deletions

View File

@ -45,9 +45,9 @@ namespace NzbDrone.Core.Test.Download.DownloadClientTests
_remoteEpisode.ParsedEpisodeInfo.FullSeason = false; _remoteEpisode.ParsedEpisodeInfo.FullSeason = false;
Subject.Definition = new DownloadClientDefinition(); Subject.Definition = new DownloadClientDefinition();
Subject.Definition.Settings = new FolderSettings Subject.Definition.Settings = new PneumaticSettings
{ {
Folder = _pneumaticFolder NzbFolder = _pneumaticFolder
}; };
} }

View File

@ -0,0 +1,88 @@
using NzbDrone.Core.Datastore.Migration.Framework;
using FluentMigrator;
using System.Data;
using NzbDrone.Common.Serializer;
using NzbDrone.Core.Download.Clients.UsenetBlackhole;
using Newtonsoft.Json;
using System;
using NzbDrone.Core.Download.Clients.Pneumatic;
namespace NzbDrone.Core.Datastore.Migration
{
[Migration(51)]
public class rename_download_client_settings : NzbDroneMigrationBase
{
protected override void MainDbUpgrade()
{
Execute.WithConnection(ConvertFolderSettings);
}
private void ConvertFolderSettings(IDbConnection conn, IDbTransaction tran)
{
using (IDbCommand downloadClientsCmd = conn.CreateCommand())
{
downloadClientsCmd.Transaction = tran;
downloadClientsCmd.CommandText = @"SELECT Value FROM Config WHERE Key = 'downloadedepisodesfolder'";
var downloadedEpisodesFolder = downloadClientsCmd.ExecuteScalar() as String;
downloadClientsCmd.Transaction = tran;
downloadClientsCmd.CommandText = @"SELECT Id, Implementation, Settings, ConfigContract FROM DownloadClients WHERE ConfigContract = 'FolderSettings'";
using (IDataReader downloadClientReader = downloadClientsCmd.ExecuteReader())
{
while (downloadClientReader.Read())
{
var id = downloadClientReader.GetInt32(0);
var implementation = downloadClientReader.GetString(1);
var settings = downloadClientReader.GetString(2);
var configContract = downloadClientReader.GetString(3);
var settingsJson = JsonConvert.DeserializeObject(settings) as Newtonsoft.Json.Linq.JObject;
if (implementation == "Blackhole")
{
var newSettings = new
{
NzbFolder = settingsJson.Value<String>("folder"),
WatchFolder = downloadedEpisodesFolder
}.ToJson();
using (IDbCommand updateCmd = conn.CreateCommand())
{
updateCmd.Transaction = tran;
updateCmd.CommandText = "UPDATE DownloadClients SET Implementation = ?, Settings = ?, ConfigContract = ? WHERE Id = ?";
updateCmd.AddParameter("UsenetBlackhole");
updateCmd.AddParameter(newSettings);
updateCmd.AddParameter("UsenetBlackholeSettings");
updateCmd.AddParameter(id);
updateCmd.ExecuteNonQuery();
}
}
else if (implementation == "Pneumatic")
{
var newSettings = new
{
NzbFolder = settingsJson.Value<String>("folder")
}.ToJson();
using (IDbCommand updateCmd = conn.CreateCommand())
{
updateCmd.Transaction = tran;
updateCmd.CommandText = "UPDATE DownloadClients SET Settings = ?, ConfigContract = ? WHERE Id = ?";
updateCmd.AddParameter(newSettings);
updateCmd.AddParameter("PneumaticSettings");
updateCmd.AddParameter(id);
updateCmd.ExecuteNonQuery();
}
}
else
{
throw new NotSupportedException();
}
}
}
}
}
}
}

View File

@ -15,7 +15,7 @@ using NzbDrone.Core.Parser.Model;
namespace NzbDrone.Core.Download.Clients.Pneumatic namespace NzbDrone.Core.Download.Clients.Pneumatic
{ {
public class Pneumatic : DownloadClientBase<FolderSettings>, IExecute<TestPneumaticCommand> public class Pneumatic : DownloadClientBase<PneumaticSettings>, IExecute<TestPneumaticCommand>
{ {
private readonly IConfigService _configService; private readonly IConfigService _configService;
private readonly IHttpProvider _httpProvider; private readonly IHttpProvider _httpProvider;
@ -56,7 +56,7 @@ namespace NzbDrone.Core.Download.Clients.Pneumatic
title = FileNameBuilder.CleanFilename(title); title = FileNameBuilder.CleanFilename(title);
//Save to the Pneumatic directory (The user will need to ensure its accessible by XBMC) //Save to the Pneumatic directory (The user will need to ensure its accessible by XBMC)
var filename = Path.Combine(Settings.Folder, title + ".nzb"); var filename = Path.Combine(Settings.NzbFolder, title + ".nzb");
logger.Debug("Downloading NZB from: {0} to: {1}", url, filename); logger.Debug("Downloading NZB from: {0} to: {1}", url, filename);
_httpProvider.DownloadFile(url, filename); _httpProvider.DownloadFile(url, filename);
@ -73,7 +73,7 @@ namespace NzbDrone.Core.Download.Clients.Pneumatic
{ {
get get
{ {
return !string.IsNullOrWhiteSpace(Settings.Folder); return !string.IsNullOrWhiteSpace(Settings.NzbFolder);
} }
} }
@ -94,7 +94,7 @@ namespace NzbDrone.Core.Download.Clients.Pneumatic
public override void Test() public override void Test()
{ {
PerformTest(Settings.Folder); PerformTest(Settings.NzbFolder);
} }
private void PerformTest(string folder) private void PerformTest(string folder)

View File

@ -8,21 +8,21 @@ using NzbDrone.Core.Validation.Paths;
namespace NzbDrone.Core.Download.Clients.Pneumatic namespace NzbDrone.Core.Download.Clients.Pneumatic
{ {
public class FolderSettingsValidator : AbstractValidator<FolderSettings> public class PneumaticSettingsValidator : AbstractValidator<PneumaticSettings>
{ {
public FolderSettingsValidator() public PneumaticSettingsValidator()
{ {
//Todo: Validate that the path actually exists //Todo: Validate that the path actually exists
RuleFor(c => c.Folder).IsValidPath(); RuleFor(c => c.NzbFolder).IsValidPath();
} }
} }
public class FolderSettings : IProviderConfig public class PneumaticSettings : IProviderConfig
{ {
private static readonly FolderSettingsValidator Validator = new FolderSettingsValidator(); private static readonly PneumaticSettingsValidator Validator = new PneumaticSettingsValidator();
[FieldDefinition(0, Label = "Folder", Type = FieldType.Path)] [FieldDefinition(0, Label = "Nzb Folder", Type = FieldType.Path)]
public String Folder { get; set; } public String NzbFolder { get; set; }
public ValidationResult Validate() public ValidationResult Validate()
{ {

View File

@ -149,8 +149,8 @@ namespace NzbDrone.Core.Download.Clients.UsenetBlackhole
public void Execute(TestUsenetBlackholeCommand message) public void Execute(TestUsenetBlackholeCommand message)
{ {
PerformTest(Settings.NzbFolder); PerformTest(message.NzbFolder);
PerformTest(Settings.WatchFolder); PerformTest(message.WatchFolder);
} }
} }
} }

View File

@ -14,6 +14,7 @@ namespace NzbDrone.Core.Download.Clients.UsenetBlackhole
{ {
//Todo: Validate that the path actually exists //Todo: Validate that the path actually exists
RuleFor(c => c.NzbFolder).IsValidPath(); RuleFor(c => c.NzbFolder).IsValidPath();
RuleFor(c => c.WatchFolder).IsValidPath();
} }
} }

View File

@ -197,6 +197,7 @@
<Compile Include="Datastore\Migration\048_add_title_to_scenemappings.cs" /> <Compile Include="Datastore\Migration\048_add_title_to_scenemappings.cs" />
<Compile Include="Datastore\Migration\049_fix_dognzb_url.cs" /> <Compile Include="Datastore\Migration\049_fix_dognzb_url.cs" />
<Compile Include="Datastore\Migration\050_add_hash_to_metadata_files.cs" /> <Compile Include="Datastore\Migration\050_add_hash_to_metadata_files.cs" />
<Compile Include="Datastore\Migration\051_rename_download_client_settings.cs" />
<Compile Include="Datastore\Migration\Framework\MigrationContext.cs" /> <Compile Include="Datastore\Migration\Framework\MigrationContext.cs" />
<Compile Include="Datastore\Migration\Framework\MigrationController.cs" /> <Compile Include="Datastore\Migration\Framework\MigrationController.cs" />
<Compile Include="Datastore\Migration\Framework\MigrationExtension.cs" /> <Compile Include="Datastore\Migration\Framework\MigrationExtension.cs" />