add secondary sort_key when using order_by and paginate at the same time (#7225)

This commit is contained in:
feng0 2024-08-13 17:39:51 +08:00 committed by GitHub
parent 986fd5bfc6
commit 2fe2e350ce
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -178,11 +178,20 @@ class DatasetDocumentListApi(Resource):
.subquery() .subquery()
query = query.outerjoin(sub_query, sub_query.c.document_id == Document.id) \ query = query.outerjoin(sub_query, sub_query.c.document_id == Document.id) \
.order_by(sort_logic(db.func.coalesce(sub_query.c.total_hit_count, 0))) .order_by(
sort_logic(db.func.coalesce(sub_query.c.total_hit_count, 0)),
sort_logic(Document.position),
)
elif sort == 'created_at': elif sort == 'created_at':
query = query.order_by(sort_logic(Document.created_at)) query = query.order_by(
sort_logic(Document.created_at),
sort_logic(Document.position),
)
else: else:
query = query.order_by(desc(Document.created_at)) query = query.order_by(
desc(Document.created_at),
desc(Document.position),
)
paginated_documents = query.paginate( paginated_documents = query.paginate(
page=page, per_page=limit, max_per_page=100, error_out=False) page=page, per_page=limit, max_per_page=100, error_out=False)