refac
This commit is contained in:
@@ -243,7 +243,7 @@ class KnowledgeTable:
|
|||||||
|
|
||||||
query = has_permission(db, Knowledge, query, filter)
|
query = has_permission(db, Knowledge, query, filter)
|
||||||
|
|
||||||
query = query.order_by(Knowledge.updated_at.desc())
|
query = query.order_by(Knowledge.updated_at.desc(), Knowledge.id.asc())
|
||||||
|
|
||||||
total = query.count()
|
total = query.count()
|
||||||
if skip:
|
if skip:
|
||||||
@@ -303,7 +303,7 @@ class KnowledgeTable:
|
|||||||
query = query.filter(File.filename.ilike(f"%{q}%"))
|
query = query.filter(File.filename.ilike(f"%{q}%"))
|
||||||
|
|
||||||
# Order by file changes
|
# Order by file changes
|
||||||
query = query.order_by(File.updated_at.desc())
|
query = query.order_by(File.updated_at.desc(), File.id.asc())
|
||||||
|
|
||||||
# Count before pagination
|
# Count before pagination
|
||||||
total = query.count()
|
total = query.count()
|
||||||
@@ -430,6 +430,9 @@ class KnowledgeTable:
|
|||||||
.filter(KnowledgeFile.knowledge_id == knowledge_id)
|
.filter(KnowledgeFile.knowledge_id == knowledge_id)
|
||||||
)
|
)
|
||||||
|
|
||||||
|
# Default sort: updated_at descending
|
||||||
|
primary_sort = File.updated_at.desc()
|
||||||
|
|
||||||
if filter:
|
if filter:
|
||||||
query_key = filter.get("query")
|
query_key = filter.get("query")
|
||||||
if query_key:
|
if query_key:
|
||||||
@@ -443,27 +446,17 @@ class KnowledgeTable:
|
|||||||
|
|
||||||
order_by = filter.get("order_by")
|
order_by = filter.get("order_by")
|
||||||
direction = filter.get("direction")
|
direction = filter.get("direction")
|
||||||
|
is_asc = direction == "asc"
|
||||||
|
|
||||||
if order_by == "name":
|
if order_by == "name":
|
||||||
if direction == "asc":
|
primary_sort = File.filename.asc() if is_asc else File.filename.desc()
|
||||||
query = query.order_by(File.filename.asc())
|
|
||||||
else:
|
|
||||||
query = query.order_by(File.filename.desc())
|
|
||||||
elif order_by == "created_at":
|
elif order_by == "created_at":
|
||||||
if direction == "asc":
|
primary_sort = File.created_at.asc() if is_asc else File.created_at.desc()
|
||||||
query = query.order_by(File.created_at.asc())
|
|
||||||
else:
|
|
||||||
query = query.order_by(File.created_at.desc())
|
|
||||||
elif order_by == "updated_at":
|
elif order_by == "updated_at":
|
||||||
if direction == "asc":
|
primary_sort = File.updated_at.asc() if is_asc else File.updated_at.desc()
|
||||||
query = query.order_by(File.updated_at.asc())
|
|
||||||
else:
|
|
||||||
query = query.order_by(File.updated_at.desc())
|
|
||||||
else:
|
|
||||||
query = query.order_by(File.updated_at.desc())
|
|
||||||
|
|
||||||
else:
|
# Apply sort with secondary key for deterministic pagination
|
||||||
query = query.order_by(File.updated_at.desc())
|
query = query.order_by(primary_sort, File.id.asc())
|
||||||
|
|
||||||
# Count BEFORE pagination
|
# Count BEFORE pagination
|
||||||
total = query.count()
|
total = query.count()
|
||||||
|
|||||||
Reference in New Issue
Block a user