fix: list_documents tie-breaker rowid ASC, matching the cloud's effect

11ba63d copied the server's "id" ASC rule, but server ids are
time-ordered cuids so that rule means insertion order there — local
uuid4 doc_ids sort randomly. rowid ASC reproduces the actual effect.
This commit is contained in:
Ray 2026-07-24 03:27:48 +08:00
parent 15b0b18857
commit d6b22e8fed

View file

@ -265,7 +265,10 @@ class SQLiteStorage:
def list_documents(self, collection: str) -> list[dict]:
conn = self._get_conn()
rows = conn.execute(
"SELECT doc_id, doc_name, doc_description, doc_type FROM documents WHERE collection_name = ? ORDER BY created_at DESC, doc_id ASC",
# Tie-breaker mirrors the cloud's effective order: server ids are
# time-ordered cuids, so "id" ASC there means insertion order —
# which locally is rowid ASC (uuid4 doc_ids sort randomly).
"SELECT doc_id, doc_name, doc_description, doc_type FROM documents WHERE collection_name = ? ORDER BY created_at DESC, rowid ASC",
(collection,),
).fetchall()
return [{"doc_id": r[0], "doc_name": r[1], "doc_description": r[2] or "", "doc_type": r[3]} for r in rows]