diff options
Diffstat (limited to 'Jellyfin.Server/Migrations')
| -rw-r--r-- | Jellyfin.Server/Migrations/MigrationOptions.cs | 2 | ||||
| -rw-r--r-- | Jellyfin.Server/Migrations/Routines/20250420050000_DisableTranscodingThrottling.cs (renamed from Jellyfin.Server/Migrations/Routines/DisableTranscodingThrottling.cs) | 0 | ||||
| -rw-r--r-- | Jellyfin.Server/Migrations/Routines/20250420060000_CreateUserLoggingConfigFile.cs (renamed from Jellyfin.Server/Migrations/Routines/CreateUserLoggingConfigFile.cs) | 0 | ||||
| -rw-r--r-- | Jellyfin.Server/Migrations/Routines/20250420070000_MigrateActivityLogDb.cs (renamed from Jellyfin.Server/Migrations/Routines/MigrateActivityLogDb.cs) | 0 | ||||
| -rw-r--r-- | Jellyfin.Server/Migrations/Routines/20250420080000_RemoveDuplicateExtras.cs (renamed from Jellyfin.Server/Migrations/Routines/RemoveDuplicateExtras.cs) | 0 | ||||
| -rw-r--r-- | Jellyfin.Server/Migrations/Routines/20250420090000_AddDefaultPluginRepository.cs (renamed from Jellyfin.Server/Migrations/Routines/AddDefaultPluginRepository.cs) | 0 | ||||
| -rw-r--r-- | Jellyfin.Server/Migrations/Routines/20250420100000_MigrateUserDb.cs (renamed from Jellyfin.Server/Migrations/Routines/MigrateUserDb.cs) | 0 | ||||
| -rw-r--r-- | Jellyfin.Server/Migrations/Routines/20250420110000_ReaddDefaultPluginRepository.cs (renamed from Jellyfin.Server/Migrations/Routines/ReaddDefaultPluginRepository.cs) | 0 | ||||
| -rw-r--r-- | Jellyfin.Server/Migrations/Routines/20250420120000_MigrateDisplayPreferencesDb.cs (renamed from Jellyfin.Server/Migrations/Routines/MigrateDisplayPreferencesDb.cs) | 0 | ||||
| -rw-r--r-- | Jellyfin.Server/Migrations/Routines/20250420130000_RemoveDownloadImagesInAdvance.cs (renamed from Jellyfin.Server/Migrations/Routines/RemoveDownloadImagesInAdvance.cs) | 0 | ||||
| -rw-r--r-- | Jellyfin.Server/Migrations/Routines/20250420140000_MigrateAuthenticationDb.cs (renamed from Jellyfin.Server/Migrations/Routines/MigrateAuthenticationDb.cs) | 0 | ||||
| -rw-r--r-- | Jellyfin.Server/Migrations/Routines/20250420150000_FixPlaylistOwner.cs (renamed from Jellyfin.Server/Migrations/Routines/FixPlaylistOwner.cs) | 0 | ||||
| -rw-r--r-- | Jellyfin.Server/Migrations/Routines/20250420160000_AddDefaultCastReceivers.cs (renamed from Jellyfin.Server/Migrations/Routines/AddDefaultCastReceivers.cs) | 0 | ||||
| -rw-r--r-- | Jellyfin.Server/Migrations/Routines/20250420170000_UpdateDefaultPluginRepository.cs (renamed from Jellyfin.Server/Migrations/Routines/UpdateDefaultPluginRepository.cs) | 0 | ||||
| -rw-r--r-- | Jellyfin.Server/Migrations/Routines/20250420180000_FixAudioData.cs (renamed from Jellyfin.Server/Migrations/Routines/FixAudioData.cs) | 0 | ||||
| -rw-r--r-- | Jellyfin.Server/Migrations/Routines/20250420190000_RemoveDuplicatePlaylistChildren.cs (renamed from Jellyfin.Server/Migrations/Routines/RemoveDuplicatePlaylistChildren.cs) | 0 | ||||
| -rw-r--r-- | Jellyfin.Server/Migrations/Routines/20250420193000_MigrateLibraryDbCompatibilityCheck.cs (renamed from Jellyfin.Server/Migrations/Routines/MigrateLibraryDbCompatibilityCheck.cs) | 0 | ||||
| -rw-r--r-- | Jellyfin.Server/Migrations/Routines/20250420200000_MigrateLibraryDb.cs (renamed from Jellyfin.Server/Migrations/Routines/MigrateLibraryDb.cs) | 0 | ||||
| -rw-r--r-- | Jellyfin.Server/Migrations/Routines/20250420210000_MoveExtractedFiles.cs (renamed from Jellyfin.Server/Migrations/Routines/MoveExtractedFiles.cs) | 0 | ||||
| -rw-r--r-- | Jellyfin.Server/Migrations/Routines/20250420230000_MoveTrickplayFiles.cs (renamed from Jellyfin.Server/Migrations/Routines/MoveTrickplayFiles.cs) | 0 | ||||
| -rw-r--r-- | Jellyfin.Server/Migrations/Routines/20250420230000_RefreshInternalDateModified.cs (renamed from Jellyfin.Server/Migrations/Routines/RefreshInternalDateModified.cs) | 0 | ||||
| -rw-r--r-- | Jellyfin.Server/Migrations/Routines/20250421000000_MigrateKeyframeData.cs (renamed from Jellyfin.Server/Migrations/Routines/MigrateKeyframeData.cs) | 0 | ||||
| -rw-r--r-- | Jellyfin.Server/Migrations/Routines/20250618010000_MigrateLibraryUserData.cs (renamed from Jellyfin.Server/Migrations/Routines/MigrateLibraryUserData.cs) | 0 | ||||
| -rw-r--r-- | Jellyfin.Server/Migrations/Routines/20250620180000_FixDates.cs (renamed from Jellyfin.Server/Migrations/Routines/FixDates.cs) | 0 | ||||
| -rw-r--r-- | Jellyfin.Server/Migrations/Routines/20250730215000_ReseedFolderFlag.cs (renamed from Jellyfin.Server/Migrations/Routines/ReseedFolderFlag.cs) | 0 | ||||
| -rw-r--r-- | Jellyfin.Server/Migrations/Routines/20251008120000_RefreshCleanNames.cs (renamed from Jellyfin.Server/Migrations/Routines/RefreshCleanNames.cs) | 0 | ||||
| -rw-r--r-- | Jellyfin.Server/Migrations/Routines/20251009200000_CleanMusicArtist.cs (renamed from Jellyfin.Server/Migrations/Routines/CleanMusicArtist.cs) | 0 | ||||
| -rw-r--r-- | Jellyfin.Server/Migrations/Routines/20260113120000_MigrateLinkedChildren.cs (renamed from Jellyfin.Server/Migrations/Routines/MigrateLinkedChildren.cs) | 0 | ||||
| -rw-r--r-- | Jellyfin.Server/Migrations/Routines/20260113230000_CleanupOrphanedExtras.cs (renamed from Jellyfin.Server/Migrations/Routines/CleanupOrphanedExtras.cs) | 58 | ||||
| -rw-r--r-- | Jellyfin.Server/Migrations/Routines/20260115120000_FixIncorrectOwnerIdRelationships.cs (renamed from Jellyfin.Server/Migrations/Routines/FixIncorrectOwnerIdRelationships.cs) | 0 | ||||
| -rw-r--r-- | Jellyfin.Server/Migrations/Routines/20260206200000_FixLibrarySubtitleDownloadLanguages.cs (renamed from Jellyfin.Server/Migrations/Routines/FixLibrarySubtitleDownloadLanguages.cs) | 0 | ||||
| -rw-r--r-- | Jellyfin.Server/Migrations/Routines/20260302090000_MigrateRatingLevels.cs (renamed from Jellyfin.Server/Migrations/Routines/MigrateRatingLevels.cs) | 0 | ||||
| -rw-r--r-- | Jellyfin.Server/Migrations/Routines/20260508120000_MergeDuplicateMusicArtists.cs (renamed from Jellyfin.Server/Migrations/Routines/MergeDuplicateMusicArtists.cs) | 0 | ||||
| -rw-r--r-- | Jellyfin.Server/Migrations/Routines/20260508130000_MergeDuplicatePeople.cs (renamed from Jellyfin.Server/Migrations/Routines/MergeDuplicatePeople.cs) | 14 |
34 files changed, 34 insertions, 40 deletions
diff --git a/Jellyfin.Server/Migrations/MigrationOptions.cs b/Jellyfin.Server/Migrations/MigrationOptions.cs index c9710f1fd1..cd1b74a613 100644 --- a/Jellyfin.Server/Migrations/MigrationOptions.cs +++ b/Jellyfin.Server/Migrations/MigrationOptions.cs @@ -16,7 +16,7 @@ namespace Jellyfin.Server.Migrations Applied = new List<(Guid Id, string Name)>(); } -// .Net xml serializer can't handle interfaces + // .Net xml serializer can't handle interfaces #pragma warning disable CA1002 // Do not expose generic lists /// <summary> /// Gets the list of applied migration routine names. diff --git a/Jellyfin.Server/Migrations/Routines/DisableTranscodingThrottling.cs b/Jellyfin.Server/Migrations/Routines/20250420050000_DisableTranscodingThrottling.cs index acf2835fe0..acf2835fe0 100644 --- a/Jellyfin.Server/Migrations/Routines/DisableTranscodingThrottling.cs +++ b/Jellyfin.Server/Migrations/Routines/20250420050000_DisableTranscodingThrottling.cs diff --git a/Jellyfin.Server/Migrations/Routines/CreateUserLoggingConfigFile.cs b/Jellyfin.Server/Migrations/Routines/20250420060000_CreateUserLoggingConfigFile.cs index 1326a6dc8d..1326a6dc8d 100644 --- a/Jellyfin.Server/Migrations/Routines/CreateUserLoggingConfigFile.cs +++ b/Jellyfin.Server/Migrations/Routines/20250420060000_CreateUserLoggingConfigFile.cs diff --git a/Jellyfin.Server/Migrations/Routines/MigrateActivityLogDb.cs b/Jellyfin.Server/Migrations/Routines/20250420070000_MigrateActivityLogDb.cs index 8c8563190d..8c8563190d 100644 --- a/Jellyfin.Server/Migrations/Routines/MigrateActivityLogDb.cs +++ b/Jellyfin.Server/Migrations/Routines/20250420070000_MigrateActivityLogDb.cs diff --git a/Jellyfin.Server/Migrations/Routines/RemoveDuplicateExtras.cs b/Jellyfin.Server/Migrations/Routines/20250420080000_RemoveDuplicateExtras.cs index c9e66d0cfe..c9e66d0cfe 100644 --- a/Jellyfin.Server/Migrations/Routines/RemoveDuplicateExtras.cs +++ b/Jellyfin.Server/Migrations/Routines/20250420080000_RemoveDuplicateExtras.cs diff --git a/Jellyfin.Server/Migrations/Routines/AddDefaultPluginRepository.cs b/Jellyfin.Server/Migrations/Routines/20250420090000_AddDefaultPluginRepository.cs index 8c8398a161..8c8398a161 100644 --- a/Jellyfin.Server/Migrations/Routines/AddDefaultPluginRepository.cs +++ b/Jellyfin.Server/Migrations/Routines/20250420090000_AddDefaultPluginRepository.cs diff --git a/Jellyfin.Server/Migrations/Routines/MigrateUserDb.cs b/Jellyfin.Server/Migrations/Routines/20250420100000_MigrateUserDb.cs index 8c3361ee16..8c3361ee16 100644 --- a/Jellyfin.Server/Migrations/Routines/MigrateUserDb.cs +++ b/Jellyfin.Server/Migrations/Routines/20250420100000_MigrateUserDb.cs diff --git a/Jellyfin.Server/Migrations/Routines/ReaddDefaultPluginRepository.cs b/Jellyfin.Server/Migrations/Routines/20250420110000_ReaddDefaultPluginRepository.cs index ebf4a2780e..ebf4a2780e 100644 --- a/Jellyfin.Server/Migrations/Routines/ReaddDefaultPluginRepository.cs +++ b/Jellyfin.Server/Migrations/Routines/20250420110000_ReaddDefaultPluginRepository.cs diff --git a/Jellyfin.Server/Migrations/Routines/MigrateDisplayPreferencesDb.cs b/Jellyfin.Server/Migrations/Routines/20250420120000_MigrateDisplayPreferencesDb.cs index ffd06fea0d..ffd06fea0d 100644 --- a/Jellyfin.Server/Migrations/Routines/MigrateDisplayPreferencesDb.cs +++ b/Jellyfin.Server/Migrations/Routines/20250420120000_MigrateDisplayPreferencesDb.cs diff --git a/Jellyfin.Server/Migrations/Routines/RemoveDownloadImagesInAdvance.cs b/Jellyfin.Server/Migrations/Routines/20250420130000_RemoveDownloadImagesInAdvance.cs index b626c473e3..b626c473e3 100644 --- a/Jellyfin.Server/Migrations/Routines/RemoveDownloadImagesInAdvance.cs +++ b/Jellyfin.Server/Migrations/Routines/20250420130000_RemoveDownloadImagesInAdvance.cs diff --git a/Jellyfin.Server/Migrations/Routines/MigrateAuthenticationDb.cs b/Jellyfin.Server/Migrations/Routines/20250420140000_MigrateAuthenticationDb.cs index 0de775e03a..0de775e03a 100644 --- a/Jellyfin.Server/Migrations/Routines/MigrateAuthenticationDb.cs +++ b/Jellyfin.Server/Migrations/Routines/20250420140000_MigrateAuthenticationDb.cs diff --git a/Jellyfin.Server/Migrations/Routines/FixPlaylistOwner.cs b/Jellyfin.Server/Migrations/Routines/20250420150000_FixPlaylistOwner.cs index 56614ece3c..56614ece3c 100644 --- a/Jellyfin.Server/Migrations/Routines/FixPlaylistOwner.cs +++ b/Jellyfin.Server/Migrations/Routines/20250420150000_FixPlaylistOwner.cs diff --git a/Jellyfin.Server/Migrations/Routines/AddDefaultCastReceivers.cs b/Jellyfin.Server/Migrations/Routines/20250420160000_AddDefaultCastReceivers.cs index 00d152b4b8..00d152b4b8 100644 --- a/Jellyfin.Server/Migrations/Routines/AddDefaultCastReceivers.cs +++ b/Jellyfin.Server/Migrations/Routines/20250420160000_AddDefaultCastReceivers.cs diff --git a/Jellyfin.Server/Migrations/Routines/UpdateDefaultPluginRepository.cs b/Jellyfin.Server/Migrations/Routines/20250420170000_UpdateDefaultPluginRepository.cs index f58cf27413..f58cf27413 100644 --- a/Jellyfin.Server/Migrations/Routines/UpdateDefaultPluginRepository.cs +++ b/Jellyfin.Server/Migrations/Routines/20250420170000_UpdateDefaultPluginRepository.cs diff --git a/Jellyfin.Server/Migrations/Routines/FixAudioData.cs b/Jellyfin.Server/Migrations/Routines/20250420180000_FixAudioData.cs index d102e24b91..d102e24b91 100644 --- a/Jellyfin.Server/Migrations/Routines/FixAudioData.cs +++ b/Jellyfin.Server/Migrations/Routines/20250420180000_FixAudioData.cs diff --git a/Jellyfin.Server/Migrations/Routines/RemoveDuplicatePlaylistChildren.cs b/Jellyfin.Server/Migrations/Routines/20250420190000_RemoveDuplicatePlaylistChildren.cs index 1545ebdc8e..1545ebdc8e 100644 --- a/Jellyfin.Server/Migrations/Routines/RemoveDuplicatePlaylistChildren.cs +++ b/Jellyfin.Server/Migrations/Routines/20250420190000_RemoveDuplicatePlaylistChildren.cs diff --git a/Jellyfin.Server/Migrations/Routines/MigrateLibraryDbCompatibilityCheck.cs b/Jellyfin.Server/Migrations/Routines/20250420193000_MigrateLibraryDbCompatibilityCheck.cs index d4cc9bbeed..d4cc9bbeed 100644 --- a/Jellyfin.Server/Migrations/Routines/MigrateLibraryDbCompatibilityCheck.cs +++ b/Jellyfin.Server/Migrations/Routines/20250420193000_MigrateLibraryDbCompatibilityCheck.cs diff --git a/Jellyfin.Server/Migrations/Routines/MigrateLibraryDb.cs b/Jellyfin.Server/Migrations/Routines/20250420200000_MigrateLibraryDb.cs index 3e4205547a..3e4205547a 100644 --- a/Jellyfin.Server/Migrations/Routines/MigrateLibraryDb.cs +++ b/Jellyfin.Server/Migrations/Routines/20250420200000_MigrateLibraryDb.cs diff --git a/Jellyfin.Server/Migrations/Routines/MoveExtractedFiles.cs b/Jellyfin.Server/Migrations/Routines/20250420210000_MoveExtractedFiles.cs index cfc1628782..cfc1628782 100644 --- a/Jellyfin.Server/Migrations/Routines/MoveExtractedFiles.cs +++ b/Jellyfin.Server/Migrations/Routines/20250420210000_MoveExtractedFiles.cs diff --git a/Jellyfin.Server/Migrations/Routines/MoveTrickplayFiles.cs b/Jellyfin.Server/Migrations/Routines/20250420230000_MoveTrickplayFiles.cs index 79a8f9577c..79a8f9577c 100644 --- a/Jellyfin.Server/Migrations/Routines/MoveTrickplayFiles.cs +++ b/Jellyfin.Server/Migrations/Routines/20250420230000_MoveTrickplayFiles.cs diff --git a/Jellyfin.Server/Migrations/Routines/RefreshInternalDateModified.cs b/Jellyfin.Server/Migrations/Routines/20250420230000_RefreshInternalDateModified.cs index b23a7dbc42..b23a7dbc42 100644 --- a/Jellyfin.Server/Migrations/Routines/RefreshInternalDateModified.cs +++ b/Jellyfin.Server/Migrations/Routines/20250420230000_RefreshInternalDateModified.cs diff --git a/Jellyfin.Server/Migrations/Routines/MigrateKeyframeData.cs b/Jellyfin.Server/Migrations/Routines/20250421000000_MigrateKeyframeData.cs index aa55309264..aa55309264 100644 --- a/Jellyfin.Server/Migrations/Routines/MigrateKeyframeData.cs +++ b/Jellyfin.Server/Migrations/Routines/20250421000000_MigrateKeyframeData.cs diff --git a/Jellyfin.Server/Migrations/Routines/MigrateLibraryUserData.cs b/Jellyfin.Server/Migrations/Routines/20250618010000_MigrateLibraryUserData.cs index 8a0a1741f1..8a0a1741f1 100644 --- a/Jellyfin.Server/Migrations/Routines/MigrateLibraryUserData.cs +++ b/Jellyfin.Server/Migrations/Routines/20250618010000_MigrateLibraryUserData.cs diff --git a/Jellyfin.Server/Migrations/Routines/FixDates.cs b/Jellyfin.Server/Migrations/Routines/20250620180000_FixDates.cs index a5b11b11d0..a5b11b11d0 100644 --- a/Jellyfin.Server/Migrations/Routines/FixDates.cs +++ b/Jellyfin.Server/Migrations/Routines/20250620180000_FixDates.cs diff --git a/Jellyfin.Server/Migrations/Routines/ReseedFolderFlag.cs b/Jellyfin.Server/Migrations/Routines/20250730215000_ReseedFolderFlag.cs index 502763ac09..502763ac09 100644 --- a/Jellyfin.Server/Migrations/Routines/ReseedFolderFlag.cs +++ b/Jellyfin.Server/Migrations/Routines/20250730215000_ReseedFolderFlag.cs diff --git a/Jellyfin.Server/Migrations/Routines/RefreshCleanNames.cs b/Jellyfin.Server/Migrations/Routines/20251008120000_RefreshCleanNames.cs index eca50ac100..eca50ac100 100644 --- a/Jellyfin.Server/Migrations/Routines/RefreshCleanNames.cs +++ b/Jellyfin.Server/Migrations/Routines/20251008120000_RefreshCleanNames.cs diff --git a/Jellyfin.Server/Migrations/Routines/CleanMusicArtist.cs b/Jellyfin.Server/Migrations/Routines/20251009200000_CleanMusicArtist.cs index d5c5f3d929..d5c5f3d929 100644 --- a/Jellyfin.Server/Migrations/Routines/CleanMusicArtist.cs +++ b/Jellyfin.Server/Migrations/Routines/20251009200000_CleanMusicArtist.cs diff --git a/Jellyfin.Server/Migrations/Routines/MigrateLinkedChildren.cs b/Jellyfin.Server/Migrations/Routines/20260113120000_MigrateLinkedChildren.cs index 74f03f5107..74f03f5107 100644 --- a/Jellyfin.Server/Migrations/Routines/MigrateLinkedChildren.cs +++ b/Jellyfin.Server/Migrations/Routines/20260113120000_MigrateLinkedChildren.cs diff --git a/Jellyfin.Server/Migrations/Routines/CleanupOrphanedExtras.cs b/Jellyfin.Server/Migrations/Routines/20260113230000_CleanupOrphanedExtras.cs index 14abaa7317..f4dfa49068 100644 --- a/Jellyfin.Server/Migrations/Routines/CleanupOrphanedExtras.cs +++ b/Jellyfin.Server/Migrations/Routines/20260113230000_CleanupOrphanedExtras.cs @@ -4,6 +4,7 @@ using System.Linq; using System.Threading; using System.Threading.Tasks; using Jellyfin.Database.Implementations; +using Jellyfin.Server.Implementations.Item; using Jellyfin.Server.Migrations.Stages; using Jellyfin.Server.ServerSetupApp; using MediaBrowser.Controller.Channels; @@ -23,7 +24,7 @@ namespace Jellyfin.Server.Migrations.Routines; /// Removes orphaned extras (items with OwnerId pointing to non-existent items). /// Must run before EF migrations that add FK constraints on OwnerId. /// </summary> -[JellyfinMigration("2026-01-13T23:00:00", nameof(CleanupOrphanedExtras), Stage = JellyfinMigrationStageTypes.CoreInitialisation)] +[JellyfinMigration("2026-01-13T23:00:00", nameof(CleanupOrphanedExtras), Stage = JellyfinMigrationStageTypes.AppInitialisation)] [JellyfinMigrationBackup(JellyfinDb = true)] public class CleanupOrphanedExtras : IAsyncMigrationRoutine { @@ -37,39 +38,14 @@ public class CleanupOrphanedExtras : IAsyncMigrationRoutine /// <param name="logger">The startup logger.</param> /// <param name="dbContextFactory">The database context factory.</param> /// <param name="libraryManager">The library manager.</param> - /// <param name="itemRepository">The item repository.</param> - /// <param name="itemCountService">The item count service.</param> - /// <param name="channelManager">The channel manager.</param> - /// <param name="recordingsManager">The recordings manager.</param> - /// <param name="mediaSourceManager">The media source manager.</param> - /// <param name="mediaSegmentManager">The media segments manager.</param> - /// <param name="configurationManager">The configuration manager.</param> - /// <param name="fileSystem">The file system.</param> public CleanupOrphanedExtras( IStartupLogger<CleanupOrphanedExtras> logger, IDbContextFactory<JellyfinDbContext> dbContextFactory, - ILibraryManager libraryManager, - IItemRepository itemRepository, - IItemCountService itemCountService, - IChannelManager channelManager, - IRecordingsManager recordingsManager, - IMediaSourceManager mediaSourceManager, - IMediaSegmentManager mediaSegmentManager, - IServerConfigurationManager configurationManager, - IFileSystem fileSystem) + ILibraryManager libraryManager) { _logger = logger; _dbContextFactory = dbContextFactory; _libraryManager = libraryManager; - BaseItem.LibraryManager ??= libraryManager; - BaseItem.ItemRepository ??= itemRepository; - BaseItem.ItemCountService ??= itemCountService; - BaseItem.ChannelManager ??= channelManager; - BaseItem.MediaSourceManager ??= mediaSourceManager; - BaseItem.MediaSegmentManager ??= mediaSegmentManager; - BaseItem.ConfigurationManager ??= configurationManager; - BaseItem.FileSystem ??= fileSystem; - Video.RecordingsManager ??= recordingsManager; } /// <inheritdoc/> @@ -78,12 +54,19 @@ public class CleanupOrphanedExtras : IAsyncMigrationRoutine var context = await _dbContextFactory.CreateDbContextAsync(cancellationToken).ConfigureAwait(false); await using (context.ConfigureAwait(false)) { + var placeholderOwner = Guid.Parse("00000000-0000-0000-0000-000000000001"); +#pragma warning disable RS0030 // Do not use banned APIs var orphanedItemIds = await context.BaseItems - .Where(b => b.OwnerId.HasValue && !b.OwnerId.Value.Equals(Guid.Empty)) - .Where(b => !context.BaseItems.Any(parent => parent.Id.Equals(b.OwnerId!.Value))) - .Select(b => b.Id) + .Where(b => b.OwnerId.HasValue && b.OwnerId == placeholderOwner) + .Select(b => new + { + b.Id, + b.Path, + b.Type + }) .ToListAsync(cancellationToken) .ConfigureAwait(false); +#pragma warning restore RS0030 // Do not use banned APIs if (orphanedItemIds.Count == 0) { @@ -97,11 +80,16 @@ public class CleanupOrphanedExtras : IAsyncMigrationRoutine var itemsToDelete = new List<BaseItem>(); foreach (var itemId in orphanedItemIds) { - var item = _libraryManager.GetItemById(itemId); - if (item is not null) - { - itemsToDelete.Add(item); - } + itemsToDelete.Add(BaseItemMapper.DeserializeBaseItem( + new Database.Implementations.Entities.BaseItemEntity() + { + Id = itemId.Id, + Path = itemId.Path, + Type = itemId.Type + }, + _logger, + null, + true)!); } _libraryManager.DeleteItemsUnsafeFast(itemsToDelete); diff --git a/Jellyfin.Server/Migrations/Routines/FixIncorrectOwnerIdRelationships.cs b/Jellyfin.Server/Migrations/Routines/20260115120000_FixIncorrectOwnerIdRelationships.cs index 0baf261a2e..0baf261a2e 100644 --- a/Jellyfin.Server/Migrations/Routines/FixIncorrectOwnerIdRelationships.cs +++ b/Jellyfin.Server/Migrations/Routines/20260115120000_FixIncorrectOwnerIdRelationships.cs diff --git a/Jellyfin.Server/Migrations/Routines/FixLibrarySubtitleDownloadLanguages.cs b/Jellyfin.Server/Migrations/Routines/20260206200000_FixLibrarySubtitleDownloadLanguages.cs index 2b1f549940..2b1f549940 100644 --- a/Jellyfin.Server/Migrations/Routines/FixLibrarySubtitleDownloadLanguages.cs +++ b/Jellyfin.Server/Migrations/Routines/20260206200000_FixLibrarySubtitleDownloadLanguages.cs diff --git a/Jellyfin.Server/Migrations/Routines/MigrateRatingLevels.cs b/Jellyfin.Server/Migrations/Routines/20260302090000_MigrateRatingLevels.cs index ed92c34aa3..ed92c34aa3 100644 --- a/Jellyfin.Server/Migrations/Routines/MigrateRatingLevels.cs +++ b/Jellyfin.Server/Migrations/Routines/20260302090000_MigrateRatingLevels.cs diff --git a/Jellyfin.Server/Migrations/Routines/MergeDuplicateMusicArtists.cs b/Jellyfin.Server/Migrations/Routines/20260508120000_MergeDuplicateMusicArtists.cs index f598848465..f598848465 100644 --- a/Jellyfin.Server/Migrations/Routines/MergeDuplicateMusicArtists.cs +++ b/Jellyfin.Server/Migrations/Routines/20260508120000_MergeDuplicateMusicArtists.cs diff --git a/Jellyfin.Server/Migrations/Routines/MergeDuplicatePeople.cs b/Jellyfin.Server/Migrations/Routines/20260508130000_MergeDuplicatePeople.cs index d092555139..10433599fa 100644 --- a/Jellyfin.Server/Migrations/Routines/MergeDuplicatePeople.cs +++ b/Jellyfin.Server/Migrations/Routines/20260508130000_MergeDuplicatePeople.cs @@ -284,10 +284,16 @@ public class MergeDuplicatePeople : IAsyncMigrationRoutine return; } - await context.Peoples - .Where(p => idsToDelete.Contains(p.Id)) - .ExecuteDeleteAsync(cancellationToken) - .ConfigureAwait(false); + var idx = 0; + foreach (var item in idsToDelete.Chunk(200)) + { + idx++; // humans count at one + _logger.LogInformation("Remove batch {BatchNo}/{MaxBatches} duplicate Peoples.", idx, idsToDelete.Count / 200); + await context.Peoples + .Where(p => item.Contains(p.Id)) + .ExecuteDeleteAsync(cancellationToken) + .ConfigureAwait(false); + } _logger.LogInformation("Removed {Count} duplicate Peoples rows.", idsToDelete.Count); } |
