diff options
| author | JPVenson <github@jpb.email> | 2025-09-24 04:51:44 +0300 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-09-23 19:51:44 -0600 |
| commit | 38f5f8008a97af560587dc09986d2c7606fbb369 (patch) | |
| tree | 013b175f08b103017819b2bd1d1897e65a14a867 | |
| parent | 7bb68d86102834dcda8e6faa736d13c54144d005 (diff) | |
Fix ordering where exists (#14843)
| -rw-r--r-- | Jellyfin.Server.Implementations/Item/PeopleRepository.cs | 23 |
1 files changed, 15 insertions, 8 deletions
diff --git a/Jellyfin.Server.Implementations/Item/PeopleRepository.cs b/Jellyfin.Server.Implementations/Item/PeopleRepository.cs index b52de5dd1..24afaea55 100644 --- a/Jellyfin.Server.Implementations/Item/PeopleRepository.cs +++ b/Jellyfin.Server.Implementations/Item/PeopleRepository.cs @@ -35,16 +35,22 @@ public class PeopleRepository(IDbContextFactory<JellyfinDbContext> dbProvider, I using var context = _dbProvider.CreateDbContext(); var dbQuery = TranslateQuery(context.Peoples.AsNoTracking(), context, filter); - // dbQuery = dbQuery.OrderBy(e => e.ListOrder); - if (filter.Limit > 0) + // Include PeopleBaseItemMap + if (!filter.ItemId.IsEmpty()) { - dbQuery = dbQuery.Take(filter.Limit); + dbQuery = dbQuery.Include(p => p.BaseItems!.Where(m => m.ItemId == filter.ItemId)) + .OrderBy(e => e.BaseItems!.First(e => e.ItemId == filter.ItemId).ListOrder) + .ThenBy(e => e.PersonType) + .ThenBy(e => e.Name); + } + else + { + dbQuery = dbQuery.OrderBy(e => e.Name); } - // Include PeopleBaseItemMap - if (!filter.ItemId.IsEmpty()) + if (filter.Limit > 0) { - dbQuery = dbQuery.Include(p => p.BaseItems!.Where(m => m.ItemId == filter.ItemId)); + dbQuery = dbQuery.Take(filter.Limit); } return dbQuery.AsEnumerable().Select(Map).ToArray(); @@ -84,14 +90,15 @@ public class PeopleRepository(IDbContextFactory<JellyfinDbContext> dbProvider, I var existingMap = maps.FirstOrDefault(e => e.PeopleId == person.Id); if (existingMap is null) { + var sortOrder = (person.SortOrder ?? context.PeopleBaseItemMap.Where(e => e.ItemId == itemId).Max(e => e.SortOrder) ?? 0) + 1; context.PeopleBaseItemMap.Add(new PeopleBaseItemMap() { Item = null!, ItemId = itemId, People = null!, PeopleId = person.Id, - ListOrder = person.SortOrder, - SortOrder = person.SortOrder, + ListOrder = sortOrder, + SortOrder = sortOrder, Role = person.Role }); } |
