diff --git a/backend/open_webui/apps/webui/models/folders.py b/backend/open_webui/apps/webui/models/folders.py index 6e28e3797..d1b6a0621 100644 --- a/backend/open_webui/apps/webui/models/folders.py +++ b/backend/open_webui/apps/webui/models/folders.py @@ -101,6 +101,10 @@ class FolderTable: try: with get_db() as db: folder = db.query(Folder).filter_by(id=id, user_id=user_id).first() + + if not folder: + return None + return FolderModel.model_validate(folder) except Exception: return None @@ -119,12 +123,16 @@ class FolderTable: with get_db() as db: folder = ( db.query(Folder) - .filter_by(parent_id=parent_id, user_id=user_id, name=name) + .filter_by(parent_id=parent_id, user_id=user_id, name=name.lower()) .first() ) + + if not folder: + return None + return FolderModel.model_validate(folder) except Exception as e: - log.error(f"get_folder_by_name_and_user_id: {e}") + log.error(f"get_folder_by_parent_id_and_user_id_and_name: {e}") return None def get_folders_by_parent_id_and_user_id( @@ -147,6 +155,10 @@ class FolderTable: try: with get_db() as db: folder = db.query(Folder).filter_by(id=id, user_id=user_id).first() + + if not folder: + return None + folder.parent_id = parent_id folder.updated_at = int(time.time()) @@ -164,6 +176,9 @@ class FolderTable: with get_db() as db: folder = db.query(Folder).filter_by(id=id, user_id=user_id).first() + if not folder: + return None + existing_folder = ( db.query(Folder) .filter_by(name=name, parent_id=folder.parent_id, user_id=user_id) @@ -190,6 +205,9 @@ class FolderTable: with get_db() as db: folder = db.query(Folder).filter_by(id=id, user_id=user_id).first() + if not folder: + return None + folder.items = items.model_dump() folder.updated_at = int(time.time()) diff --git a/backend/open_webui/apps/webui/routers/folders.py b/backend/open_webui/apps/webui/routers/folders.py index df38b2190..ffc6fdee3 100644 --- a/backend/open_webui/apps/webui/routers/folders.py +++ b/backend/open_webui/apps/webui/routers/folders.py @@ -215,7 +215,18 @@ async def delete_folder_by_id(id: str, user=Depends(get_verified_user)): if folder: try: result = Folders.delete_folder_by_id_and_user_id(id, user.id) - return result + if result: + # Delete all chats in the folder + chats = Chats.get_chats_by_folder_id_and_user_id(id, user.id) + for chat in chats: + Chats.delete_chat_by_id(chat.id, user.id) + + return result + else: + raise HTTPException( + status_code=status.HTTP_400_BAD_REQUEST, + detail=ERROR_MESSAGES.DEFAULT("Error deleting folder"), + ) except Exception as e: log.exception(e) log.error(f"Error deleting folder: {id}") diff --git a/src/lib/components/common/Collapsible.svelte b/src/lib/components/common/Collapsible.svelte index 6a9d1ff19..72baec4cf 100644 --- a/src/lib/components/common/Collapsible.svelte +++ b/src/lib/components/common/Collapsible.svelte @@ -18,7 +18,9 @@