aboutsummaryrefslogtreecommitdiff
path: root/Jellyfin.Server.Implementations/Item/PeopleRepository.cs
diff options
context:
space:
mode:
authorJPVenson <github@jpb.email>2025-09-24 04:51:44 +0300
committerGitHub <noreply@github.com>2025-09-23 19:51:44 -0600
commit38f5f8008a97af560587dc09986d2c7606fbb369 (patch)
tree013b175f08b103017819b2bd1d1897e65a14a867 /Jellyfin.Server.Implementations/Item/PeopleRepository.cs
parent7bb68d86102834dcda8e6faa736d13c54144d005 (diff)
Fix ordering where exists (#14843)
Diffstat (limited to 'Jellyfin.Server.Implementations/Item/PeopleRepository.cs')
-rw-r--r--Jellyfin.Server.Implementations/Item/PeopleRepository.cs23
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
});
}