aboutsummaryrefslogtreecommitdiff
path: root/Jellyfin.Server.Implementations/Item/BaseItemRepository.cs
diff options
context:
space:
mode:
Diffstat (limited to 'Jellyfin.Server.Implementations/Item/BaseItemRepository.cs')
-rw-r--r--Jellyfin.Server.Implementations/Item/BaseItemRepository.cs29
1 files changed, 24 insertions, 5 deletions
diff --git a/Jellyfin.Server.Implementations/Item/BaseItemRepository.cs b/Jellyfin.Server.Implementations/Item/BaseItemRepository.cs
index 619863fd5..0e9996873 100644
--- a/Jellyfin.Server.Implementations/Item/BaseItemRepository.cs
+++ b/Jellyfin.Server.Implementations/Item/BaseItemRepository.cs
@@ -228,12 +228,14 @@ public sealed class BaseItemRepository(
.Include(e => e.Images)
.Include(e => e.LockedFields);
dbQuery = TranslateQuery(dbQuery, context, filter);
- // .DistinctBy(e => e.Id);
+ // .DistinctBy(e => e.Id);
if (filter.EnableTotalRecordCount)
{
result.TotalRecordCount = dbQuery.Count();
}
+ dbQuery = ApplyOrder(dbQuery, filter);
+
if (filter.Limit.HasValue || filter.StartIndex.HasValue)
{
var offset = filter.StartIndex ?? 0;
@@ -267,6 +269,7 @@ public sealed class BaseItemRepository(
.Include(e => e.Images)
.Include(e => e.LockedFields);
dbQuery = TranslateQuery(dbQuery, context, filter);
+ dbQuery = ApplyOrder(dbQuery, filter);
if (filter.Limit.HasValue || filter.StartIndex.HasValue)
{
var offset = filter.StartIndex ?? 0;
@@ -2110,19 +2113,35 @@ public sealed class BaseItemRepository(
return query;
}
- foreach (var item in orderBy)
+ IOrderedQueryable<BaseItemEntity>? orderedQuery = null;
+
+ var firstOrdering = orderBy.FirstOrDefault();
+ if (firstOrdering != default)
+ {
+ var expression = MapOrderByField(firstOrdering.OrderBy, filter);
+ if (firstOrdering.SortOrder == SortOrder.Ascending)
+ {
+ orderedQuery = query.OrderBy(expression);
+ }
+ else
+ {
+ orderedQuery = query.OrderByDescending(expression);
+ }
+ }
+
+ foreach (var item in orderBy.Skip(1))
{
var expression = MapOrderByField(item.OrderBy, filter);
if (item.SortOrder == SortOrder.Ascending)
{
- query = query.OrderBy(expression);
+ orderedQuery = orderedQuery!.ThenBy(expression);
}
else
{
- query = query.OrderByDescending(expression);
+ orderedQuery = orderedQuery!.ThenByDescending(expression);
}
}
- return query;
+ return orderedQuery ?? query;
}
}