aboutsummaryrefslogtreecommitdiff
path: root/Jellyfin.Server/Migrations/Routines/MigrateLibraryDb.cs
diff options
context:
space:
mode:
Diffstat (limited to 'Jellyfin.Server/Migrations/Routines/MigrateLibraryDb.cs')
-rw-r--r--Jellyfin.Server/Migrations/Routines/MigrateLibraryDb.cs47
1 files changed, 39 insertions, 8 deletions
diff --git a/Jellyfin.Server/Migrations/Routines/MigrateLibraryDb.cs b/Jellyfin.Server/Migrations/Routines/MigrateLibraryDb.cs
index ca8e1054e..d221d1853 100644
--- a/Jellyfin.Server/Migrations/Routines/MigrateLibraryDb.cs
+++ b/Jellyfin.Server/Migrations/Routines/MigrateLibraryDb.cs
@@ -186,6 +186,11 @@ internal class MigrateLibraryDb : IDatabaseMigrationRoutine
foreach (SqliteDataReader dto in connection.Query(itemValueQuery))
{
var itemId = dto.GetGuid(0);
+ if (!baseItemIds.Contains(itemId))
+ {
+ continue;
+ }
+
var entity = GetItemValue(dto);
var key = ((int)entity.Type, entity.Value);
if (!localItems.TryGetValue(key, out var existing))
@@ -252,6 +257,11 @@ internal class MigrateLibraryDb : IDatabaseMigrationRoutine
continue;
}
+ if (!baseItemIds.Contains(refItem.Id))
+ {
+ continue;
+ }
+
userData.ItemId = refItem.Id;
operation.JellyfinDbContext.UserData.Add(userData);
}
@@ -282,7 +292,13 @@ internal class MigrateLibraryDb : IDatabaseMigrationRoutine
{
foreach (SqliteDataReader dto in connection.Query(mediaStreamQuery))
{
- operation.JellyfinDbContext.MediaStreamInfos.Add(GetMediaStream(dto));
+ var entity = GetMediaStream(dto);
+ if (!baseItemIds.Contains(entity.ItemId))
+ {
+ continue;
+ }
+
+ operation.JellyfinDbContext.MediaStreamInfos.Add(entity);
}
}
@@ -305,7 +321,13 @@ internal class MigrateLibraryDb : IDatabaseMigrationRoutine
{
foreach (SqliteDataReader dto in connection.Query(mediaAttachmentQuery))
{
- operation.JellyfinDbContext.AttachmentStreamInfos.Add(GetMediaAttachment(dto));
+ var entity = GetMediaAttachment(dto);
+ if (!baseItemIds.Contains(entity.ItemId))
+ {
+ continue;
+ }
+
+ operation.JellyfinDbContext.AttachmentStreamInfos.Add(entity);
}
}
@@ -319,7 +341,7 @@ internal class MigrateLibraryDb : IDatabaseMigrationRoutine
{
const string personsQuery =
"""
- SELECT ItemId, Name, Role, PersonType, SortOrder FROM People
+ SELECT ItemId, Name, Role, PersonType, SortOrder, ListOrder FROM People
WHERE EXISTS(SELECT 1 FROM TypedBaseItems WHERE TypedBaseItems.guid = People.ItemId)
""";
@@ -337,9 +359,9 @@ internal class MigrateLibraryDb : IDatabaseMigrationRoutine
}
var entity = GetPerson(reader);
- if (!peopleCache.TryGetValue(entity.Name, out var personCache))
+ if (!peopleCache.TryGetValue(entity.Name + "|" + entity.PersonType, out var personCache))
{
- peopleCache[entity.Name] = personCache = (entity, []);
+ peopleCache[entity.Name + "|" + entity.PersonType] = personCache = (entity, []);
}
if (reader.TryGetString(2, out var role))
@@ -347,6 +369,7 @@ internal class MigrateLibraryDb : IDatabaseMigrationRoutine
}
int? sortOrder = reader.IsDBNull(4) ? null : reader.GetInt32(4);
+ int? listOrder = reader.IsDBNull(5) ? null : reader.GetInt32(5);
personCache.Items.Add(new PeopleBaseItemMap()
{
@@ -354,14 +377,12 @@ internal class MigrateLibraryDb : IDatabaseMigrationRoutine
ItemId = itemId,
People = null!,
PeopleId = personCache.Person.Id,
- ListOrder = sortOrder,
+ ListOrder = listOrder,
SortOrder = sortOrder,
Role = role
});
}
- baseItemIds.Clear();
-
foreach (var item in peopleCache)
{
operation.JellyfinDbContext.Peoples.Add(item.Value.Person);
@@ -390,6 +411,11 @@ internal class MigrateLibraryDb : IDatabaseMigrationRoutine
foreach (SqliteDataReader dto in connection.Query(chapterQuery))
{
var chapter = GetChapter(dto);
+ if (!baseItemIds.Contains(chapter.ItemId))
+ {
+ continue;
+ }
+
operation.JellyfinDbContext.Chapters.Add(chapter);
}
}
@@ -416,6 +442,11 @@ internal class MigrateLibraryDb : IDatabaseMigrationRoutine
foreach (SqliteDataReader dto in connection.Query(ancestorIdsQuery))
{
var ancestorId = GetAncestorId(dto);
+ if (!baseItemIds.Contains(ancestorId.ItemId) || !baseItemIds.Contains(ancestorId.ParentItemId))
+ {
+ continue;
+ }
+
operation.JellyfinDbContext.AncestorIds.Add(ancestorId);
}
}