Migrations: Fixes migrations from 13 to 17. Media Folder without Collection & Last Synced Table not existing. (#20743)

* Creating and adding new migration. And fixing another small bug.

* Adding XML Header and renaming to a more clearly defined name
This commit is contained in:
Nicklas Kramer
2025-11-06 10:40:29 +01:00
committed by GitHub
parent f11b8ffae9
commit 3ab12e9b59
3 changed files with 47 additions and 0 deletions

View File

@@ -138,5 +138,6 @@ public class UmbracoPlan : MigrationPlan
To<V_17_0_0.MigrateSystemDatesToUtc>("{7208B20D-6BFC-472E-9374-85EEA817B27D}");
To<V_17_0_0.AddDistributedJobLock>("{263075BF-F18A-480D-92B4-4947D2EAB772}");
To<V_17_0_0.AddLastSyncedTable>("26179D88-58CE-4C92-B4A4-3CBA6E7188AC");
To<V_17_0_0.EnsureDefaultMediaFolderHasDefaultCollection>("{8B2C830A-4FFB-4433-8337-8649B0BF52C8}");
}
}

View File

@@ -80,5 +80,6 @@ public class UmbracoPremigrationPlan : MigrationPlan
// When logging in, we save the user to the cache so these need to have run.
To<V_17_0_0.AddCacheVersionDatabaseLock>("{1DC39DC7-A88A-4912-8E60-4FD36246E8D1}");
To<V_17_0_0.AddRepositoryCacheVersionTable>("{A1B3F5D6-4C8B-4E7A-9F8C-1D2B3E4F5A6B}");
To<V_17_0_0.AddLastSyncedTable>("{72894BCA-9FAD-4CC3-B0D0-D6CDA2FFA636}");
}
}

View File

@@ -0,0 +1,45 @@
using Umbraco.Cms.Core.Models;
using Umbraco.Cms.Core.Services;
using Constants = Umbraco.Cms.Core.Constants;
namespace Umbraco.Cms.Infrastructure.Migrations.Upgrade.V_17_0_0;
/// <summary>
/// Ensures that the Media Document Type called "Folder" gets a collection added to it.
/// </summary>
public class EnsureDefaultMediaFolderHasDefaultCollection : AsyncMigrationBase
{
private readonly IMediaTypeService _mediaTypeService;
private readonly IDataTypeService _dataTypeService;
public EnsureDefaultMediaFolderHasDefaultCollection(
IMigrationContext context,
IMediaTypeService mediaTypeService,
IDataTypeService dataTypeService)
: base(context)
{
_mediaTypeService = mediaTypeService;
_dataTypeService = dataTypeService;
}
protected override async Task MigrateAsync()
{
IMediaType? folderMediaType = _mediaTypeService
.Get(Guid.Parse("f38bd2d7-65d0-48e6-95dc-87ce06ec2d3d")); // Folder media type default key.
if (folderMediaType is null || folderMediaType.ListView is not null)
{
return;
}
IDataType? dataType = await _dataTypeService.GetAsync(Guid.Parse("3a0156c4-3b8c-4803-bdc1-6871faa83fff")); // Media Collection default key.
if (dataType is null)
{
return;
}
folderMediaType.ListView = dataType.Key;
await _mediaTypeService.UpdateAsync(folderMediaType, Constants.Security.SuperUserKey);
}
}