Radarr/src/NzbDrone.Core/Datastore/Migration/171_quality_definition_pref...

57 lines
1.7 KiB
C#

using System.Collections.Generic;
using System.Data;
using Dapper;
using FluentMigrator;
using NzbDrone.Core.Datastore.Migration.Framework;
namespace NzbDrone.Core.Datastore.Migration
{
[Migration(171)]
public class quality_definition_preferred_size : NzbDroneMigrationBase
{
protected override void MainDbUpgrade()
{
Alter.Table("QualityDefinitions").AddColumn("PreferredSize").AsDouble().Nullable();
Execute.WithConnection(UpdateQualityDefinitions);
}
private void UpdateQualityDefinitions(IDbConnection conn, IDbTransaction tran)
{
var existing = conn.Query<QualityDefinition170>("SELECT Id, MaxSize FROM QualityDefinitions");
var updated = new List<QualityDefinition171>();
foreach (var row in existing)
{
var maxSize = row.MaxSize;
var preferredSize = maxSize;
if (maxSize.HasValue && maxSize.Value > 5)
{
preferredSize = maxSize.Value - 5;
}
updated.Add(new QualityDefinition171
{
Id = row.Id,
PreferredSize = preferredSize
});
}
var updateSql = "UPDATE QualityDefinitions SET PreferredSize = @PreferredSize WHERE Id = @Id";
conn.Execute(updateSql, updated, transaction: tran);
}
private class QualityDefinition170 : ModelBase
{
public int? MaxSize { get; set; }
}
private class QualityDefinition171 : ModelBase
{
public int? PreferredSize { get; set; }
}
}
}