Radarr/src/NzbDrone.Core/Datastore/Migration/137_add_import_exclusions_t...

61 lines
2.4 KiB
C#
Raw Normal View History

using System.Data;
2019-12-22 22:08:53 +00:00
using System.Globalization;
2017-04-30 12:05:41 +00:00
using System.Linq;
using System.Text.RegularExpressions;
2019-12-22 22:08:53 +00:00
using FluentMigrator;
using NzbDrone.Common.Extensions;
2019-12-22 22:08:53 +00:00
using NzbDrone.Core.Datastore.Migration.Framework;
2017-04-30 12:05:41 +00:00
namespace NzbDrone.Core.Datastore.Migration
{
[Migration(137)]
public class add_import_exclusions_table : NzbDroneMigrationBase
{
protected override void MainDbUpgrade()
{
2019-12-22 22:08:53 +00:00
if (!Schema.Schema("dbo").Table("ImportExclusions").Exists())
2017-04-30 12:05:41 +00:00
{
Create.TableForModel("ImportExclusions")
2019-10-14 20:21:00 +00:00
.WithColumn("TmdbId").AsInt64().NotNullable().Unique().PrimaryKey()
.WithColumn("MovieTitle").AsString().Nullable()
.WithColumn("MovieYear").AsInt64().Nullable().WithDefaultValue(0);
2017-04-30 12:05:41 +00:00
}
2019-12-22 22:08:53 +00:00
2017-04-30 12:05:41 +00:00
Execute.WithConnection(AddExisting);
}
private void AddExisting(IDbConnection conn, IDbTransaction tran)
{
using (var getSeriesCmd = conn.CreateCommand())
2017-04-30 12:05:41 +00:00
{
getSeriesCmd.Transaction = tran;
getSeriesCmd.CommandText = @"SELECT ""Key"", ""Value"" FROM ""Config"" WHERE ""Key"" = 'importexclusions'";
var textInfo = new CultureInfo("en-US", false).TextInfo;
using (var seriesReader = getSeriesCmd.ExecuteReader())
2017-04-30 12:05:41 +00:00
{
while (seriesReader.Read())
{
2019-12-22 22:08:53 +00:00
var key = seriesReader.GetString(0);
var value = seriesReader.GetString(1);
2019-12-22 22:08:53 +00:00
var importExclusions = value.Split(',').Select(x =>
{
return string.Format("(\"{0}\", \"{1}\")",
Regex.Replace(x, @"^.*\-(.*)$", "$1"),
textInfo.ToTitleCase(string.Join(" ", x.Split('-').DropLast(1))));
}).ToList();
2017-04-30 12:05:41 +00:00
using (var updateCmd = conn.CreateCommand())
2017-04-30 12:05:41 +00:00
{
updateCmd.Transaction = tran;
updateCmd.CommandText = "INSERT INTO \"ImportExclusions\" (tmdbid, MovieTitle) VALUES " + string.Join(", ", importExclusions);
2017-04-30 12:05:41 +00:00
updateCmd.ExecuteNonQuery();
}
}
}
}
}
}
2019-10-14 20:21:00 +00:00
}