Timothy Jaeryang Baek пре 1 месец
родитељ
комит
6497b46a78
2 измењених фајлова са 12 додато и 18 уклоњено
  1. 7 13
      backend/open_webui/models/folders.py
  2. 5 5
      backend/open_webui/routers/folders.py

+ 7 - 13
backend/open_webui/models/folders.py

@@ -251,18 +251,15 @@ class FolderTable:
             log.error(f"update_folder: {e}")
             return
 
-    def delete_folder_by_id_and_user_id(
-        self, id: str, user_id: str, delete_chats=True
-    ) -> bool:
+    def delete_folder_by_id_and_user_id(self, id: str, user_id: str) -> list[str]:
         try:
+            folder_ids = []
             with get_db() as db:
                 folder = db.query(Folder).filter_by(id=id, user_id=user_id).first()
                 if not folder:
-                    return False
+                    return folder_ids
 
-                if delete_chats:
-                    # Delete all chats in the folder
-                    Chats.delete_chats_by_user_id_and_folder_id(user_id, folder.id)
+                folder_ids.append(folder.id)
 
                 # Delete all children folders
                 def delete_children(folder):
@@ -270,12 +267,9 @@ class FolderTable:
                         folder.id, user_id
                     )
                     for folder_child in folder_children:
-                        if delete_chats:
-                            Chats.delete_chats_by_user_id_and_folder_id(
-                                user_id, folder_child.id
-                            )
 
                         delete_children(folder_child)
+                        folder_ids.append(folder_child.id)
 
                         folder = db.query(Folder).filter_by(id=folder_child.id).first()
                         db.delete(folder)
@@ -284,10 +278,10 @@ class FolderTable:
                 delete_children(folder)
                 db.delete(folder)
                 db.commit()
-                return True
+                return folder_ids
         except Exception as e:
             log.error(f"delete_folder: {e}")
-            return False
+            return []
 
 
 Folders = FolderTable()

+ 5 - 5
backend/open_webui/routers/folders.py

@@ -244,11 +244,11 @@ async def delete_folder_by_id(
     folder = Folders.get_folder_by_id_and_user_id(id, user.id)
     if folder:
         try:
-            result = Folders.delete_folder_by_id_and_user_id(id, user.id)
-            if result:
-                return result
-            else:
-                raise Exception("Error deleting folder")
+            folder_ids = Folders.delete_folder_by_id_and_user_id(id, user.id)
+            for folder_id in folder_ids:
+                Chats.delete_chats_by_user_id_and_folder_id(user.id, folder_id)
+
+            return True
         except Exception as e:
             log.exception(e)
             log.error(f"Error deleting folder: {id}")