diff --git a/backend/open_webui/models/chats.py b/backend/open_webui/models/chats.py index 7183145c87..dc2f63695e 100644 --- a/backend/open_webui/models/chats.py +++ b/backend/open_webui/models/chats.py @@ -9,6 +9,7 @@ from open_webui.internal.db import Base, JSONField, get_db, get_db_context from open_webui.models.tags import TagModel, Tag, Tags from open_webui.models.folders import Folders from open_webui.models.chat_messages import ChatMessage, ChatMessages +from open_webui.models.automations import AutomationRun from open_webui.utils.misc import sanitize_data_for_db, sanitize_text_for_db from pydantic import BaseModel, ConfigDict @@ -1478,6 +1479,9 @@ class ChatTable: def delete_chat_by_id(self, id: str, db: Optional[Session] = None) -> bool: try: with get_db_context(db) as db: + db.query(AutomationRun).filter_by(chat_id=id).update( + {AutomationRun.chat_id: None}, synchronize_session=False + ) db.query(ChatMessage).filter_by(chat_id=id).delete() db.query(Chat).filter_by(id=id).delete() db.commit() @@ -1489,6 +1493,9 @@ class ChatTable: def delete_chat_by_id_and_user_id(self, id: str, user_id: str, db: Optional[Session] = None) -> bool: try: with get_db_context(db) as db: + db.query(AutomationRun).filter_by(chat_id=id).update( + {AutomationRun.chat_id: None}, synchronize_session=False + ) db.query(ChatMessage).filter_by(chat_id=id).delete() db.query(Chat).filter_by(id=id, user_id=user_id).delete() db.commit() @@ -1503,6 +1510,9 @@ class ChatTable: self.delete_shared_chats_by_user_id(user_id, db=db) chat_id_subquery = db.query(Chat.id).filter_by(user_id=user_id).subquery() + db.query(AutomationRun).filter(AutomationRun.chat_id.in_(chat_id_subquery)).update( + {AutomationRun.chat_id: None}, synchronize_session=False + ) db.query(ChatMessage).filter(ChatMessage.chat_id.in_(chat_id_subquery)).delete( synchronize_session=False ) @@ -1517,6 +1527,9 @@ class ChatTable: try: with get_db_context(db) as db: chat_id_subquery = db.query(Chat.id).filter_by(user_id=user_id, folder_id=folder_id).subquery() + db.query(AutomationRun).filter(AutomationRun.chat_id.in_(chat_id_subquery)).update( + {AutomationRun.chat_id: None}, synchronize_session=False + ) db.query(ChatMessage).filter(ChatMessage.chat_id.in_(chat_id_subquery)).delete( synchronize_session=False ) diff --git a/src/lib/components/automations/AutomationEditor.svelte b/src/lib/components/automations/AutomationEditor.svelte index 4638512a92..fbdf448179 100644 --- a/src/lib/components/automations/AutomationEditor.svelte +++ b/src/lib/components/automations/AutomationEditor.svelte @@ -378,9 +378,10 @@