Add the default date-with-time configuration if missing (#16902)
This commit is contained in:
committed by
Nikolaj Geisle
parent
506d3b3a9c
commit
79807999ee
@@ -88,5 +88,8 @@ public class UmbracoPlan : MigrationPlan
|
||||
// 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}");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user