瀏覽代碼

add func to get chat list with more specific sql query

Aryan Kothari 9 月之前
父節點
當前提交
2b78e613a4
共有 1 個文件被更改,包括 26 次插入0 次删除
  1. 26 0
      backend/apps/webui/models/chats.py

+ 26 - 0
backend/apps/webui/models/chats.py

@@ -244,6 +244,32 @@ class ChatTable:
                 .all()
             )
             return [ChatModel.model_validate(chat) for chat in all_chats]
+    def get_chat_title_id_list_by_user_id(
+        self,
+        user_id: str,
+        include_archived: bool = False,
+        skip: int = 0,
+        limit: int = 50,
+        ) -> List[ChatTitleIdResponse]:
+        with get_db() as db:
+            query = db.query(Chat).filter_by(user_id=user_id)
+            if not include_archived:
+                query = query.filter_by(archived=False)
+
+            all_chats = (
+                query.order_by(Chat.updated_at.desc())
+                # limit cols
+                .with_entities(Chat.id, Chat.title, Chat.updated_at, Chat.created_at)
+                .all()
+            )
+            # result has to be destrctured from sqlalchemy `row` and mapped to a dict since the `ChatModel`is not the returned dataclass.
+            return list(map(lambda row: ChatTitleIdResponse.model_validate({
+                "id": row[0],
+                "title": row[1],
+                "updated_at": row[2],
+                "created_at": row[3]
+            }), all_chats))
+
 
     def get_chat_list_by_chat_ids(
         self, chat_ids: List[str], skip: int = 0, limit: int = 50