You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Radarr/src/NzbDrone.Core/Datastore/Migration/171_quality_definition_pref...

57 lines
1.7 KiB

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; }
}
}
}