Преглед на файлове

fix: an issue of keyword search feature in application log list (#7816)

Ethan преди 7 месеца
родител
ревизия
ea748b50f2
променени са 1 файла, в които са добавени 12 реда и са изтрити 15 реда
  1. 12 15
      api/controllers/console/app/conversation.py

+ 12 - 15
api/controllers/console/app/conversation.py

@@ -173,21 +173,18 @@ class ChatConversationApi(Resource):
 
         if args["keyword"]:
             keyword_filter = "%{}%".format(args["keyword"])
-            query = (
-                query.join(
-                    Message,
-                    Message.conversation_id == Conversation.id,
-                )
-                .join(subquery, subquery.c.conversation_id == Conversation.id)
-                .filter(
-                    or_(
-                        Message.query.ilike(keyword_filter),
-                        Message.answer.ilike(keyword_filter),
-                        Conversation.name.ilike(keyword_filter),
-                        Conversation.introduction.ilike(keyword_filter),
-                        subquery.c.from_end_user_session_id.ilike(keyword_filter),
-                    ),
-                )
+            message_subquery = (
+                db.session.query(Message.conversation_id)
+                .filter(or_(Message.query.ilike(keyword_filter), Message.answer.ilike(keyword_filter)))
+                .subquery()
+            )
+            query = query.join(subquery, subquery.c.conversation_id == Conversation.id).filter(
+                or_(
+                    Conversation.id.in_(message_subquery),
+                    Conversation.name.ilike(keyword_filter),
+                    Conversation.introduction.ilike(keyword_filter),
+                    subquery.c.from_end_user_session_id.ilike(keyword_filter),
+                ),
             )
 
         account = current_user