From c3c9b9afbb2535adc7d77c4cae125b574b0a74a2 Mon Sep 17 00:00:00 2001 From: Bogdan Date: Sun, 9 Jul 2023 02:24:36 +0300 Subject: [PATCH] Add db migration for Metadata Profile's Ignored to List --- .../033_metadata_profile_ignored_to_list.cs | 69 +++++++++++++++++++ 1 file changed, 69 insertions(+) create mode 100644 src/NzbDrone.Core/Datastore/Migration/033_metadata_profile_ignored_to_list.cs diff --git a/src/NzbDrone.Core/Datastore/Migration/033_metadata_profile_ignored_to_list.cs b/src/NzbDrone.Core/Datastore/Migration/033_metadata_profile_ignored_to_list.cs new file mode 100644 index 000000000..85983cd14 --- /dev/null +++ b/src/NzbDrone.Core/Datastore/Migration/033_metadata_profile_ignored_to_list.cs @@ -0,0 +1,69 @@ +using System; +using System.Collections.Generic; +using System.Data; +using System.Linq; +using Dapper; +using FluentMigrator; +using Newtonsoft.Json; +using Newtonsoft.Json.Linq; +using NzbDrone.Common.Serializer; +using NzbDrone.Core.Datastore.Migration.Framework; + +namespace NzbDrone.Core.Datastore.Migration +{ + [Migration(033)] + public class metadata_profile_ignored_to_list : NzbDroneMigrationBase + { + protected override void MainDbUpgrade() + { + Execute.WithConnection(MigrateMetadataProfileIgnored); + } + + private void MigrateMetadataProfileIgnored(IDbConnection conn, IDbTransaction tran) + { + var updatedMetadataProfiles = new List(); + + using (var selectCommand = conn.CreateCommand()) + { + selectCommand.Transaction = tran; + selectCommand.CommandText = "SELECT \"Id\", \"Ignored\" FROM \"MetadataProfiles\""; + + using var reader = selectCommand.ExecuteReader(); + + while (reader.Read()) + { + var id = reader.GetInt32(0); + var ignored = reader.GetValue(1).ToString() ?? string.Empty; + + if (!string.IsNullOrWhiteSpace(ignored)) + { + try + { + JsonConvert.DeserializeObject(ignored); + + continue; + } + catch (Exception) + { + // ignored + } + } + + ignored = ignored + .Split(',', StringSplitOptions.TrimEntries | StringSplitOptions.RemoveEmptyEntries) + .Distinct() + .ToJson(); + + updatedMetadataProfiles.Add(new + { + Id = id, + Ignored = ignored + }); + } + } + + var updatedMetadataProfilesSql = "UPDATE \"MetadataProfiles\" SET \"Ignored\" = @Ignored WHERE \"Id\" = @Id"; + conn.Execute(updatedMetadataProfilesSql, updatedMetadataProfiles, transaction: tran); + } + } +}