Skip to content

Commit

Permalink
Add the default date-with-time configuration if missing (#16902)
Browse files Browse the repository at this point in the history
  • Loading branch information
kjac authored and Zeegaan committed Aug 12, 2024
1 parent 506d3b3 commit 7980799
Show file tree
Hide file tree
Showing 2 changed files with 53 additions and 0 deletions.
3 changes: 3 additions & 0 deletions src/Umbraco.Infrastructure/Migrations/Upgrade/UmbracoPlan.cs
Original file line number Diff line number Diff line change
Expand Up @@ -88,5 +88,8 @@ protected virtual void DefinePlan()
// To 14.1.0
To<V_14_1_0.MigrateRichTextConfiguration>("{FEF2DAF4-5408-4636-BB0E-B8798DF8F095}");
To<V_14_1_0.MigrateOldRichTextSeedConfiguration>("{A385C5DF-48DC-46B4-A742-D5BB846483BC}");

// To 14.2.0
To<V_14_2_0.AddMissingDateTimeConfiguration>("{20ED404C-6FF9-4F91-8AC9-2B298E0002EB}");
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
using NPoco;
using Umbraco.Cms.Core;
using Umbraco.Cms.Core.Serialization;
using Umbraco.Cms.Infrastructure.Persistence;
using Umbraco.Cms.Infrastructure.Persistence.Dtos;
using Umbraco.Extensions;

namespace Umbraco.Cms.Infrastructure.Migrations.Upgrade.V_14_2_0;

public class AddMissingDateTimeConfiguration : MigrationBase
{
private readonly IConfigurationEditorJsonSerializer _configurationEditorJsonSerializer;

public AddMissingDateTimeConfiguration(IMigrationContext context, IConfigurationEditorJsonSerializer configurationEditorJsonSerializer)
: base(context)
=> _configurationEditorJsonSerializer = configurationEditorJsonSerializer;

protected override void Migrate()
{
Sql<ISqlContext> sql = Sql()
.Select<DataTypeDto>()
.From<DataTypeDto>()
.Where<DataTypeDto>(dto =>
dto.NodeId == Constants.DataTypes.DateTime
&& dto.EditorAlias.Equals(Constants.PropertyEditors.Aliases.DateTime));

DataTypeDto? dataTypeDto = Database.FirstOrDefault<DataTypeDto>(sql);
if (dataTypeDto is null)
{
return;
}

Dictionary<string, object> configurationData = dataTypeDto.Configuration.IsNullOrWhiteSpace()
? new Dictionary<string, object>()
: _configurationEditorJsonSerializer
.Deserialize<Dictionary<string, object?>>(dataTypeDto.Configuration)?
.Where(item => item.Value is not null)
.ToDictionary(item => item.Key, item => item.Value!)
?? new Dictionary<string, object>();

// only proceed with the migration if the data-type has no format assigned
if (configurationData.TryAdd("format", "YYYY-MM-DD HH:mm:ss") is false)
{
return;
}

dataTypeDto.Configuration = _configurationEditorJsonSerializer.Serialize(configurationData);
Database.Update(dataTypeDto);
}
}

0 comments on commit 7980799

Please sign in to comment.