From df106099a159f8cf7910a89c50338ec045a78e61 Mon Sep 17 00:00:00 2001 From: Tim Baek Date: Thu, 25 Dec 2025 18:32:13 -0500 Subject: [PATCH] refac --- backend/open_webui/models/chats.py | 15 ++++++++++++++- backend/open_webui/routers/chats.py | 9 ++++++++- 2 files changed, 22 insertions(+), 2 deletions(-) diff --git a/backend/open_webui/models/chats.py b/backend/open_webui/models/chats.py index 4082a40d15..797878afae 100644 --- a/backend/open_webui/models/chats.py +++ b/backend/open_webui/models/chats.py @@ -806,7 +806,20 @@ class ChatTable: if filter.get("end_time"): query = query.filter(Chat.created_at <= filter.get("end_time")) - query = query.order_by(Chat.updated_at.desc()) + order_by = filter.get("order_by") + direction = filter.get("direction") + + if order_by and direction: + if hasattr(Chat, order_by): + if direction.lower() == "asc": + query = query.order_by(getattr(Chat, order_by).asc()) + elif direction.lower() == "desc": + query = query.order_by(getattr(Chat, order_by).desc()) + else: + query = query.order_by(Chat.updated_at.desc()) + + else: + query = query.order_by(Chat.updated_at.desc()) total = query.count() diff --git a/backend/open_webui/routers/chats.py b/backend/open_webui/routers/chats.py index ac914c63ff..bbeb19f83d 100644 --- a/backend/open_webui/routers/chats.py +++ b/backend/open_webui/routers/chats.py @@ -206,6 +206,7 @@ def get_session_user_chat_usage_stats( @router.get("/stats/export", response_model=list[ChatStatsExport]) async def export_chat_stats( request: Request, + chat_id: Optional[str] = None, start_time: Optional[int] = None, end_time: Optional[int] = None, page: Optional[int] = 1, @@ -226,7 +227,13 @@ async def export_chat_stats( skip = (page - 1) * limit # Fetch chats with date filtering - filter = {} + filter = {"order_by": "created_at", "direction": "asc"} + + if chat_id: + chat = Chats.get_chat_by_id(chat_id) + if chat: + filter["start_time"] = chat.created_at + if start_time: filter["start_time"] = start_time if end_time: