From 882fa42e2df7830b93ce04cdaa569ba940aeee05 Mon Sep 17 00:00:00 2001 From: BatJan Date: Wed, 25 Jul 2018 11:10:35 +0200 Subject: [PATCH] U4-11497 - Make JSON storage default on the Tags property editor (#2773) --- .../SetDefaultTagsStorageType.cs | 48 +++++++++++++++++++ src/Umbraco.Core/Umbraco.Core.csproj | 1 + 2 files changed, 49 insertions(+) create mode 100644 src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSevenElevenTwelve/SetDefaultTagsStorageType.cs diff --git a/src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSevenElevenTwelve/SetDefaultTagsStorageType.cs b/src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSevenElevenTwelve/SetDefaultTagsStorageType.cs new file mode 100644 index 0000000000..9e4fe95100 --- /dev/null +++ b/src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSevenElevenTwelve/SetDefaultTagsStorageType.cs @@ -0,0 +1,48 @@ +using Umbraco.Core.Logging; +using Umbraco.Core.Persistence.SqlSyntax; + +namespace Umbraco.Core.Persistence.Migrations.Upgrades.TargetVersionSevenElevenTwelve +{ + /// + /// Set the default storageType for the tags datatype to "CSV" to ensure backwards compatibilty since the default is going to be JSON in new versions + /// + + [Migration("7.12.0", 1, Constants.System.UmbracoMigrationName)] + public class SetDefaultTagsStorageType: MigrationBase + { + public SetDefaultTagsStorageType(ISqlSyntaxProvider sqlSyntax, ILogger logger) : base(sqlSyntax, logger) + { + } + + public override void Up() + { + if (Context == null || Context.Database == null) return; + + + // We need to get all datatypes with an alias of "umbraco.tags" so we can loop over them and set the missing values if needed + var nodeIds = Context.Database.Query("SELECT NodeId FROM CmsDataType WHERE PropertyEditorAlias = {0}", Constants.PropertyEditors.TagsAlias); + + foreach (var nodeId in nodeIds) + { + // We need to check if the node has a "storageType" set + var result = Context.Database.SingleOrDefault("SELECT value FROM CmsDataTypePrevalue WHERE nodeId = {0} AND alias = '{1}'", nodeId, "storageType"); + + // if the "storageType" has not been set we do so by adding a new row in the table for the nodid and set it + if (result == null) + { + Insert.IntoTable("CmsDataTypePrevalue").Row(new + { + datatypeNodId = nodeId, + value = "Csv", + sortOrder = 2, + alias = "storageType" + }); + } + } + } + + public override void Down() + { + } + } +} diff --git a/src/Umbraco.Core/Umbraco.Core.csproj b/src/Umbraco.Core/Umbraco.Core.csproj index 9e6f0cb7e5..0fbfaa0b27 100644 --- a/src/Umbraco.Core/Umbraco.Core.csproj +++ b/src/Umbraco.Core/Umbraco.Core.csproj @@ -568,6 +568,7 @@ +