mirror of
https://github.com/zoriya/Kyoo.git
synced 2025-05-31 04:04:21 -04:00
Invaliding enum sort key
This commit is contained in:
parent
d77cae6d2b
commit
f561b6044c
@ -69,16 +69,20 @@ namespace Kyoo.Controllers
|
|||||||
{
|
{
|
||||||
if (where != null)
|
if (where != null)
|
||||||
query = query.Where(where);
|
query = query.Where(where);
|
||||||
|
|
||||||
Expression<Func<TValue, object>> sortKey = sort.Key ?? defaultSort;
|
Expression<Func<TValue, object>> sortKey = sort.Key ?? defaultSort;
|
||||||
|
Expression sortExpression = sortKey.Body.NodeType == ExpressionType.Convert
|
||||||
|
? ((UnaryExpression)sortKey.Body).Operand
|
||||||
|
: sortKey.Body;
|
||||||
|
|
||||||
|
if (typeof(Enum).IsAssignableFrom(sortExpression.Type))
|
||||||
|
throw new ArgumentException("Invalid sort key.");
|
||||||
|
|
||||||
query = sort.Descendant ? query.OrderByDescending(sortKey) : query.OrderBy(sortKey);
|
query = sort.Descendant ? query.OrderByDescending(sortKey) : query.OrderBy(sortKey);
|
||||||
|
|
||||||
if (limit.AfterID != 0)
|
if (limit.AfterID != 0)
|
||||||
{
|
{
|
||||||
TValue after = await get(limit.AfterID);
|
TValue after = await get(limit.AfterID);
|
||||||
Expression sortExpression = sortKey.Body.NodeType == ExpressionType.Convert
|
|
||||||
? ((UnaryExpression)sortKey.Body).Operand
|
|
||||||
: sortKey.Body;
|
|
||||||
Expression key = Expression.Constant(sortKey.Compile()(after), sortExpression.Type);
|
Expression key = Expression.Constant(sortKey.Compile()(after), sortExpression.Type);
|
||||||
query = query.Where(Expression.Lambda<Func<TValue, bool>>(
|
query = query.Where(Expression.Lambda<Func<TValue, bool>>(
|
||||||
ApiHelper.StringCompatibleExpression(Expression.GreaterThan, sortExpression, key),
|
ApiHelper.StringCompatibleExpression(Expression.GreaterThan, sortExpression, key),
|
||||||
|
@ -1 +1 @@
|
|||||||
Subproject commit 45afdbb44ed28b5ee408923b6d4d13534e284517
|
Subproject commit d692f9f3d364d7d2748205374a3a84fb1fd4a938
|
Loading…
x
Reference in New Issue
Block a user