using System.Data; using FluentMigrator; using NzbDrone.Core.Datastore.Migration.Framework; namespace NzbDrone.Core.Datastore.Migration { [Migration(117)] public class update_movie_file : NzbDroneMigrationBase { protected override void MainDbUpgrade() { Create.Column("Edition").OnTable("MovieFiles").AsString().Nullable(); // Execute.WithConnection(SetSortTitles); } private void SetSortTitles(IDbConnection conn, IDbTransaction tran) { using (IDbCommand getSeriesCmd = conn.CreateCommand()) { getSeriesCmd.Transaction = tran; getSeriesCmd.CommandText = @"SELECT ""Id"", ""RelativePath"" FROM ""MovieFiles"""; using (IDataReader seriesReader = getSeriesCmd.ExecuteReader()) { while (seriesReader.Read()) { var id = seriesReader.GetInt32(0); var relativePath = seriesReader.GetString(1); var result = Parser.Parser.ParseMovieTitle(relativePath); var edition = ""; if (result != null) { edition = result.Edition ?? Parser.Parser.ParseEdition(result.SimpleReleaseTitle); } using (IDbCommand updateCmd = conn.CreateCommand()) { updateCmd.Transaction = tran; updateCmd.CommandText = "UPDATE \"MovieFiles\" SET \"Edition\" = ? WHERE \"Id\" = ?"; updateCmd.AddParameter(edition); updateCmd.AddParameter(id); updateCmd.ExecuteNonQuery(); } } } } } } }