From 7bda6bf767d5d5c4dc1111465096a88e10b5030e Mon Sep 17 00:00:00 2001 From: Timothy Jaeryang Baek Date: Fri, 13 Feb 2026 11:20:26 -0600 Subject: [PATCH] fix: PostgreSQL cannot use get_chat_ids_by_model_id Co-Authored-By: EntropyYue <164553692+EntropyYue@users.noreply.github.com> --- backend/open_webui/models/chat_messages.py | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/backend/open_webui/models/chat_messages.py b/backend/open_webui/models/chat_messages.py index fe3539f9c..e6e932be1 100644 --- a/backend/open_webui/models/chat_messages.py +++ b/backend/open_webui/models/chat_messages.py @@ -15,6 +15,7 @@ from sqlalchemy import ( Text, JSON, Index, + func, ) #################### @@ -279,25 +280,26 @@ class ChatMessageTable: db: Optional[Session] = None, ) -> list[str]: """Get distinct chat_ids that used a specific model.""" - from sqlalchemy import distinct with get_db_context(db) as db: - query = db.query(distinct(ChatMessage.chat_id)).filter( - ChatMessage.model_id == model_id - ) + query = db.query( + ChatMessage.chat_id, + func.max(ChatMessage.created_at).label("last_message_at"), + ).filter(ChatMessage.model_id == model_id) if start_date: query = query.filter(ChatMessage.created_at >= start_date) if end_date: query = query.filter(ChatMessage.created_at <= end_date) - # Order by most recent message in each chat + # Group by chat_id and order by most recent message in each chat chat_ids = ( - query.order_by(ChatMessage.created_at.desc()) + query.group_by(ChatMessage.chat_id) + .order_by(func.max(ChatMessage.created_at).desc()) .offset(skip) .limit(limit) .all() ) - return [chat_id for (chat_id,) in chat_ids] + return [chat_id for chat_id, _ in chat_ids] def delete_messages_by_chat_id( self, chat_id: str, db: Optional[Session] = None