using System.Data; using System.Text; using System.Text.RegularExpressions; using FluentMigrator; using NzbDrone.Core.Datastore.Migration.Framework; namespace NzbDrone.Core.Datastore.Migration { [Migration(121)] public class update_filedate_config : NzbDroneMigrationBase { protected override void MainDbUpgrade() { Execute.WithConnection(SetTitleSlug); } private void SetTitleSlug(IDbConnection conn, IDbTransaction tran) { using (IDbCommand getSeriesCmd = conn.CreateCommand()) { getSeriesCmd.Transaction = tran; getSeriesCmd.CommandText = @"SELECT ""Id"", ""Value"" FROM ""Config"" WHERE ""Key"" = 'filedate'"; using (IDataReader seriesReader = getSeriesCmd.ExecuteReader()) { while (seriesReader.Read()) { var id = seriesReader.GetInt32(0); var value = seriesReader.GetString(1); using (IDbCommand updateCmd = conn.CreateCommand()) { updateCmd.Transaction = tran; updateCmd.CommandText = "UPDATE \"Config\" SET \"Value\" = 'Release' WHERE \"Id\" = ?"; updateCmd.AddParameter(id); updateCmd.ExecuteNonQuery(); } } } } } public static string ToUrlSlug(string value) { // First to lower case value = value.ToLowerInvariant(); // Remove all accents var bytes = Encoding.GetEncoding("Cyrillic").GetBytes(value); value = Encoding.ASCII.GetString(bytes); // Replace spaces value = Regex.Replace(value, @"\s", "-", RegexOptions.Compiled); // Remove invalid chars value = Regex.Replace(value, @"[^a-z0-9\s-_]", "", RegexOptions.Compiled); // Trim dashes from end value = value.Trim('-', '_'); // Replace double occurences of - or _ value = Regex.Replace(value, @"([-_]){2,}", "$1", RegexOptions.Compiled); return value; } } }