diff --git a/back/src/Kyoo.Core/Controllers/Repositories/LibraryItemRepository.cs b/back/src/Kyoo.Core/Controllers/Repositories/LibraryItemRepository.cs index 4ec4781e..61ecc099 100644 --- a/back/src/Kyoo.Core/Controllers/Repositories/LibraryItemRepository.cs +++ b/back/src/Kyoo.Core/Controllers/Repositories/LibraryItemRepository.cs @@ -147,10 +147,12 @@ namespace Kyoo.Core.Controllers Sort sort = default, Pagination limit = default) { - ICollection items = await ApplyFilters(_LibraryRelatedQuery(x => x.ID == id), + ICollection items = await ApplyFilters( + _LibraryRelatedQuery(x => x.ID == id), where, sort, - limit); + limit + ); if (!items.Any() && await _libraries.Value.GetOrDefault(id) == null) throw new ItemNotFoundException(); return items; @@ -162,10 +164,12 @@ namespace Kyoo.Core.Controllers Sort sort = default, Pagination limit = default) { - ICollection items = await ApplyFilters(_LibraryRelatedQuery(x => x.Slug == slug), + ICollection items = await ApplyFilters( + _LibraryRelatedQuery(x => x.Slug == slug), where, sort, - limit); + limit + ); if (!items.Any() && await _libraries.Value.GetOrDefault(slug) == null) throw new ItemNotFoundException(); return items; diff --git a/back/src/Kyoo.Core/Controllers/Repositories/LocalRepository.cs b/back/src/Kyoo.Core/Controllers/Repositories/LocalRepository.cs index 835218bd..b5d30f66 100644 --- a/back/src/Kyoo.Core/Controllers/Repositories/LocalRepository.cs +++ b/back/src/Kyoo.Core/Controllers/Repositories/LocalRepository.cs @@ -140,6 +140,8 @@ namespace Kyoo.Core.Controllers T reference, bool next = true) { + sort ??= DefaultSort; + // x => ParameterExpression x = Expression.Parameter(typeof(T), "x"); ConstantExpression referenceC = Expression.Constant(reference, typeof(T)); @@ -284,12 +286,14 @@ namespace Kyoo.Core.Controllers if (where != null) query = query.Where(where); - if (limit.AfterID != null) + if (limit?.AfterID != null) { T reference = await Get(limit.AfterID.Value); query = query.Where(KeysetPaginatate(sort, reference, !limit.Reverse)); } - if (limit.Limit > 0) + if (limit?.Reverse == true) + query = query.Reverse(); + if (limit?.Limit > 0) query = query.Take(limit.Limit); return await query.ToListAsync(); diff --git a/back/src/Kyoo.Core/ExceptionFilter.cs b/back/src/Kyoo.Core/ExceptionFilter.cs index 62f9fbc4..7f941688 100644 --- a/back/src/Kyoo.Core/ExceptionFilter.cs +++ b/back/src/Kyoo.Core/ExceptionFilter.cs @@ -57,7 +57,7 @@ namespace Kyoo.Core context.Result = new ConflictObjectResult(ex.Existing); break; case Exception ex: - _logger.LogError("Unhandled error", ex); + _logger.LogError(ex, "Unhandled error"); context.Result = new ServerErrorObjectResult(new RequestError("Internal Server Error")); break; }