Skip to content

Commit 7980799

Browse files
kjacZeegaan
authored andcommitted
Add the default date-with-time configuration if missing (#16902)
1 parent 506d3b3 commit 7980799

File tree

2 files changed

+53
-0
lines changed

2 files changed

+53
-0
lines changed

src/Umbraco.Infrastructure/Migrations/Upgrade/UmbracoPlan.cs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -88,5 +88,8 @@ protected virtual void DefinePlan()
8888
// To 14.1.0
8989
To<V_14_1_0.MigrateRichTextConfiguration>("{FEF2DAF4-5408-4636-BB0E-B8798DF8F095}");
9090
To<V_14_1_0.MigrateOldRichTextSeedConfiguration>("{A385C5DF-48DC-46B4-A742-D5BB846483BC}");
91+
92+
// To 14.2.0
93+
To<V_14_2_0.AddMissingDateTimeConfiguration>("{20ED404C-6FF9-4F91-8AC9-2B298E0002EB}");
9194
}
9295
}
Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
using NPoco;
2+
using Umbraco.Cms.Core;
3+
using Umbraco.Cms.Core.Serialization;
4+
using Umbraco.Cms.Infrastructure.Persistence;
5+
using Umbraco.Cms.Infrastructure.Persistence.Dtos;
6+
using Umbraco.Extensions;
7+
8+
namespace Umbraco.Cms.Infrastructure.Migrations.Upgrade.V_14_2_0;
9+
10+
public class AddMissingDateTimeConfiguration : MigrationBase
11+
{
12+
private readonly IConfigurationEditorJsonSerializer _configurationEditorJsonSerializer;
13+
14+
public AddMissingDateTimeConfiguration(IMigrationContext context, IConfigurationEditorJsonSerializer configurationEditorJsonSerializer)
15+
: base(context)
16+
=> _configurationEditorJsonSerializer = configurationEditorJsonSerializer;
17+
18+
protected override void Migrate()
19+
{
20+
Sql<ISqlContext> sql = Sql()
21+
.Select<DataTypeDto>()
22+
.From<DataTypeDto>()
23+
.Where<DataTypeDto>(dto =>
24+
dto.NodeId == Constants.DataTypes.DateTime
25+
&& dto.EditorAlias.Equals(Constants.PropertyEditors.Aliases.DateTime));
26+
27+
DataTypeDto? dataTypeDto = Database.FirstOrDefault<DataTypeDto>(sql);
28+
if (dataTypeDto is null)
29+
{
30+
return;
31+
}
32+
33+
Dictionary<string, object> configurationData = dataTypeDto.Configuration.IsNullOrWhiteSpace()
34+
? new Dictionary<string, object>()
35+
: _configurationEditorJsonSerializer
36+
.Deserialize<Dictionary<string, object?>>(dataTypeDto.Configuration)?
37+
.Where(item => item.Value is not null)
38+
.ToDictionary(item => item.Key, item => item.Value!)
39+
?? new Dictionary<string, object>();
40+
41+
// only proceed with the migration if the data-type has no format assigned
42+
if (configurationData.TryAdd("format", "YYYY-MM-DD HH:mm:ss") is false)
43+
{
44+
return;
45+
}
46+
47+
dataTypeDto.Configuration = _configurationEditorJsonSerializer.Serialize(configurationData);
48+
Database.Update(dataTypeDto);
49+
}
50+
}

0 commit comments

Comments
 (0)