From 2fe2e350ce55c85cf63d94fd3f5596bd781f7f17 Mon Sep 17 00:00:00 2001 From: feng0 <81764189+feng000000@users.noreply.github.com> Date: Tue, 13 Aug 2024 17:39:51 +0800 Subject: [PATCH] add secondary sort_key when using `order_by` and `paginate` at the same time (#7225) --- .../console/datasets/datasets_document.py | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/api/controllers/console/datasets/datasets_document.py b/api/controllers/console/datasets/datasets_document.py index afe0ca7c69..976b97660a 100644 --- a/api/controllers/console/datasets/datasets_document.py +++ b/api/controllers/console/datasets/datasets_document.py @@ -178,11 +178,20 @@ class DatasetDocumentListApi(Resource): .subquery() 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': - query = query.order_by(sort_logic(Document.created_at)) + query = query.order_by( + sort_logic(Document.created_at), + sort_logic(Document.position), + ) else: - query = query.order_by(desc(Document.created_at)) + query = query.order_by( + desc(Document.created_at), + desc(Document.position), + ) paginated_documents = query.paginate( page=page, per_page=limit, max_per_page=100, error_out=False)