server/search: allow negating sort:pool

This commit is contained in:
Eva
2023-05-20 12:16:46 +02:00
parent 5034121be6
commit 7823682b39
2 changed files with 8 additions and 5 deletions

View File

@ -126,12 +126,14 @@ def _pool_filter(
def _pool_sort(
query: SaQuery, pool_id: Optional[int]
query: SaQuery, pool_id: Optional[int], order: str
) -> SaQuery:
if pool_id is None:
return query
return query.join(model.PoolPost, sa.and_(model.PoolPost.post_id == model.Post.post_id, model.PoolPost.pool_id == pool_id)) \
.order_by(model.PoolPost.order.desc())
db_query = query.join(model.PoolPost, sa.and_(model.PoolPost.post_id == model.Post.post_id, model.PoolPost.pool_id == pool_id))
if order == tokens.SortToken.SORT_DESC:
return db_query.order_by(model.PoolPost.order.desc())
return db_query.order_by(model.PoolPost.order.asc())
def _category_filter(
@ -463,7 +465,7 @@ class PostSearchConfig(BaseSearchConfig):
),
(
["pool"],
lambda subquery: _pool_sort(subquery, self.pool_id)
lambda subquery, order: _pool_sort(subquery, self.pool_id, order)
)
]
)

View File

@ -185,7 +185,8 @@ class Executor:
sort_token.name
]
if callable(entry):
db_query = entry(db_query)
order = _get_order(sort_token.order, sort_token.SORT_DESC)
db_query = entry(db_query, order)
else:
column, default_order = entry
order = _get_order(sort_token.order, default_order)