2021-11-24 16:58:51 +00:00
using System.Data ;
using FluentMigrator ;
using NzbDrone.Core.Datastore.Migration.Framework ;
namespace NzbDrone.Core.Datastore.Migration
{
[Migration(051)]
public class cdh_per_downloadclient : NzbDroneMigrationBase
{
protected override void MainDbUpgrade ( )
{
Alter . Table ( "DownloadClients" )
. AddColumn ( "RemoveCompletedDownloads" ) . AsBoolean ( ) . NotNullable ( ) . WithDefaultValue ( true )
. AddColumn ( "RemoveFailedDownloads" ) . AsBoolean ( ) . NotNullable ( ) . WithDefaultValue ( true ) ;
Execute . WithConnection ( MoveRemoveSettings ) ;
}
private void MoveRemoveSettings ( IDbConnection conn , IDbTransaction tran )
{
var removeCompletedDownloads = false ;
var removeFailedDownloads = true ;
2022-01-26 00:08:27 +00:00
using ( var removeCompletedDownloadsCmd = conn . CreateCommand ( tran , "SELECT \"Value\" FROM \"Config\" WHERE \"Key\" = 'removecompleteddownloads'" ) )
2021-11-24 16:58:51 +00:00
{
if ( ( removeCompletedDownloadsCmd . ExecuteScalar ( ) as string ) ? . ToLower ( ) = = "true" )
{
removeCompletedDownloads = true ;
}
}
2022-01-26 00:08:27 +00:00
using ( var removeFailedDownloadsCmd = conn . CreateCommand ( tran , "SELECT \"Value\" FROM \"Config\" WHERE \"Key\" = 'removefaileddownloads'" ) )
2021-11-24 16:58:51 +00:00
{
if ( ( removeFailedDownloadsCmd . ExecuteScalar ( ) as string ) ? . ToLower ( ) = = "false" )
{
removeFailedDownloads = false ;
}
}
2022-01-26 00:08:27 +00:00
string commandText ;
if ( conn . GetType ( ) . FullName = = "Npgsql.NpgsqlConnection" )
{
commandText = $"UPDATE \" DownloadClients \ " SET \"RemoveCompletedDownloads\" = (CASE WHEN \"Implementation\" IN ('RTorrent', 'Flood') THEN 'false' ELSE $1 END), \"RemoveFailedDownloads\" = $2" ;
}
else
{
commandText = $"UPDATE \" DownloadClients \ " SET \"RemoveCompletedDownloads\" = (CASE WHEN \"Implementation\" IN ('RTorrent', 'Flood') THEN 'false' ELSE ? END), \"RemoveFailedDownloads\" = ?" ;
}
using ( var updateClientCmd = conn . CreateCommand ( tran , commandText ) )
2021-11-24 16:58:51 +00:00
{
2022-01-26 00:08:27 +00:00
updateClientCmd . AddParameter ( removeCompletedDownloads ) ;
updateClientCmd . AddParameter ( removeFailedDownloads ) ;
2021-11-24 16:58:51 +00:00
updateClientCmd . ExecuteNonQuery ( ) ;
}
2022-01-26 00:08:27 +00:00
using ( var removeConfigCmd = conn . CreateCommand ( tran , $"DELETE FROM \" Config \ " WHERE \"Key\" IN ('removecompleteddownloads', 'removefaileddownloads')" ) )
2021-11-24 16:58:51 +00:00
{
removeConfigCmd . ExecuteNonQuery ( ) ;
}
}
}
}