Restore NFO/import ordering by using ListOrder instead of SortOrder

This commit is contained in:
theguymadmax 2025-09-26 10:26:54 -04:00
parent 54d48fa446
commit 2a54669a8a

View File

@ -104,9 +104,7 @@ public class PeopleRepository(IDbContextFactory<JellyfinDbContext> dbProvider, I
var existingMaps = context.PeopleBaseItemMap.Include(e => e.People).Where(e => e.ItemId == itemId).ToList(); var existingMaps = context.PeopleBaseItemMap.Include(e => e.People).Where(e => e.ItemId == itemId).ToList();
var maxSortOrder = Math.Max( var listOrder = 0;
context.PeopleBaseItemMap.Include(e => e.People).Where(e => e.ItemId == itemId && e.People.PersonType == PersonKind.Actor.ToString()).Max(e => (int?)e.SortOrder) ?? 0,
people.Where(p => p.Type == PersonKind.Actor && p.SortOrder.HasValue).Max(p => (int?)p.SortOrder) ?? 0);
foreach (var person in people) foreach (var person in people)
{ {
@ -114,23 +112,27 @@ public class PeopleRepository(IDbContextFactory<JellyfinDbContext> dbProvider, I
var existingMap = existingMaps.FirstOrDefault(e => e.People.Name == person.Name && e.People.PersonType == person.Type.ToString() && e.Role == person.Role); var existingMap = existingMaps.FirstOrDefault(e => e.People.Name == person.Name && e.People.PersonType == person.Type.ToString() && e.Role == person.Role);
if (existingMap is null) if (existingMap is null)
{ {
var sortOrder = person.Type == PersonKind.Actor ? (person.SortOrder ?? ++maxSortOrder) : person.SortOrder;
context.PeopleBaseItemMap.Add(new PeopleBaseItemMap() context.PeopleBaseItemMap.Add(new PeopleBaseItemMap()
{ {
Item = null!, Item = null!,
ItemId = itemId, ItemId = itemId,
People = null!, People = null!,
PeopleId = entityPerson.Id, PeopleId = entityPerson.Id,
ListOrder = sortOrder, ListOrder = listOrder,
SortOrder = sortOrder, SortOrder = person.SortOrder,
Role = person.Role Role = person.Role
}); });
} }
else else
{ {
// Update the order for existing mappings
existingMap.ListOrder = listOrder;
existingMap.SortOrder = person.SortOrder;
// person mapping already exists so remove from list // person mapping already exists so remove from list
existingMaps.Remove(existingMap); existingMaps.Remove(existingMap);
} }
listOrder++;
} }
context.PeopleBaseItemMap.RemoveRange(existingMaps); context.PeopleBaseItemMap.RemoveRange(existingMaps);