Timothy Jaeryang Baek hace 6 meses
padre
commit
a02b9b1010

+ 6 - 3
backend/open_webui/models/folders.py

@@ -7,7 +7,10 @@ import re
 
 from pydantic import BaseModel, ConfigDict
 from sqlalchemy import BigInteger, Column, Text, JSON, Boolean, func
+from sqlalchemy import select
 
+
+from backend.open_webui.internal import db
 from open_webui.internal.db import Base, get_db
 from open_webui.env import SRC_LOG_LEVELS
 
@@ -244,9 +247,9 @@ class FolderTable:
     ) -> Optional[FolderModel]:
         try:
             async with get_db() as db:
-                folder = (
-                    await db.query(Folder).filter_by(id=id, user_id=user_id).first()
-                )
+                stmt = select(Folder).where(Folder.id == id, Folder.user_id == user_id)
+                result = await db.execute(stmt)
+                folder = result.scalars().first()
 
                 if not folder:
                     return None

+ 1 - 1
backend/open_webui/routers/chats.py

@@ -203,7 +203,7 @@ async def search_user_chats(
 @router.get("/folder/{folder_id}", response_model=list[ChatResponse])
 async def get_chats_by_folder_id(folder_id: str, user=Depends(get_verified_user)):
     folder_ids = [folder_id]
-    children_folders = Folders.get_children_folders_by_id_and_user_id(
+    children_folders = await Folders.get_children_folders_by_id_and_user_id(
         folder_id, user.id
     )
     if children_folders:

+ 18 - 16
backend/open_webui/routers/folders.py

@@ -42,7 +42,7 @@ router = APIRouter()
 
 @router.get("/", response_model=list[FolderModel])
 async def get_folders(user=Depends(get_verified_user)):
-    folders = Folders.get_folders_by_user_id(user.id)
+    folders = await Folders.get_folders_by_user_id(user.id)
 
     return [
         {
@@ -66,8 +66,8 @@ async def get_folders(user=Depends(get_verified_user)):
 
 
 @router.post("/")
-def create_folder(form_data: FolderForm, user=Depends(get_verified_user)):
-    folder = Folders.get_folder_by_parent_id_and_user_id_and_name(
+async def create_folder(form_data: FolderForm, user=Depends(get_verified_user)):
+    folder = await Folders.get_folder_by_parent_id_and_user_id_and_name(
         None, user.id, form_data.name
     )
 
@@ -78,7 +78,7 @@ def create_folder(form_data: FolderForm, user=Depends(get_verified_user)):
         )
 
     try:
-        folder = Folders.insert_new_folder(user.id, form_data)
+        folder = await Folders.insert_new_folder(user.id, form_data)
         return folder
     except Exception as e:
         log.exception(e)
@@ -96,7 +96,7 @@ def create_folder(form_data: FolderForm, user=Depends(get_verified_user)):
 
 @router.get("/{id}", response_model=Optional[FolderModel])
 async def get_folder_by_id(id: str, user=Depends(get_verified_user)):
-    folder = Folders.get_folder_by_id_and_user_id(id, user.id)
+    folder = await Folders.get_folder_by_id_and_user_id(id, user.id)
     if folder:
         return folder
     else:
@@ -115,9 +115,9 @@ async def get_folder_by_id(id: str, user=Depends(get_verified_user)):
 async def update_folder_name_by_id(
     id: str, form_data: FolderForm, user=Depends(get_verified_user)
 ):
-    folder = Folders.get_folder_by_id_and_user_id(id, user.id)
+    folder = await Folders.get_folder_by_id_and_user_id(id, user.id)
     if folder:
-        existing_folder = Folders.get_folder_by_parent_id_and_user_id_and_name(
+        existing_folder = await Folders.get_folder_by_parent_id_and_user_id_and_name(
             folder.parent_id, user.id, form_data.name
         )
         if existing_folder and existing_folder.id != id:
@@ -127,7 +127,9 @@ async def update_folder_name_by_id(
             )
 
         try:
-            folder = Folders.update_folder_by_id_and_user_id(id, user.id, form_data)
+            folder = await Folders.update_folder_by_id_and_user_id(
+                id, user.id, form_data
+            )
 
             return folder
         except Exception as e:
@@ -157,9 +159,9 @@ class FolderParentIdForm(BaseModel):
 async def update_folder_parent_id_by_id(
     id: str, form_data: FolderParentIdForm, user=Depends(get_verified_user)
 ):
-    folder = Folders.get_folder_by_id_and_user_id(id, user.id)
+    folder = await Folders.get_folder_by_id_and_user_id(id, user.id)
     if folder:
-        existing_folder = Folders.get_folder_by_parent_id_and_user_id_and_name(
+        existing_folder = await Folders.get_folder_by_parent_id_and_user_id_and_name(
             form_data.parent_id, user.id, folder.name
         )
 
@@ -170,7 +172,7 @@ async def update_folder_parent_id_by_id(
             )
 
         try:
-            folder = Folders.update_folder_parent_id_by_id_and_user_id(
+            folder = await Folders.update_folder_parent_id_by_id_and_user_id(
                 id, user.id, form_data.parent_id
             )
             return folder
@@ -201,10 +203,10 @@ class FolderIsExpandedForm(BaseModel):
 async def update_folder_is_expanded_by_id(
     id: str, form_data: FolderIsExpandedForm, user=Depends(get_verified_user)
 ):
-    folder = Folders.get_folder_by_id_and_user_id(id, user.id)
+    folder = await Folders.get_folder_by_id_and_user_id(id, user.id)
     if folder:
         try:
-            folder = Folders.update_folder_is_expanded_by_id_and_user_id(
+            folder = await Folders.update_folder_is_expanded_by_id_and_user_id(
                 id, user.id, form_data.is_expanded
             )
             return folder
@@ -231,7 +233,7 @@ async def update_folder_is_expanded_by_id(
 async def delete_folder_by_id(
     request: Request, id: str, user=Depends(get_verified_user)
 ):
-    chat_delete_permission = has_permission(
+    chat_delete_permission = await has_permission(
         user.id, "chat.delete", request.app.state.config.USER_PERMISSIONS
     )
 
@@ -241,10 +243,10 @@ async def delete_folder_by_id(
             detail=ERROR_MESSAGES.ACCESS_PROHIBITED,
         )
 
-    folder = Folders.get_folder_by_id_and_user_id(id, user.id)
+    folder = await Folders.get_folder_by_id_and_user_id(id, user.id)
     if folder:
         try:
-            folder_ids = Folders.delete_folder_by_id_and_user_id(id, user.id)
+            folder_ids = await Folders.delete_folder_by_id_and_user_id(id, user.id)
             for folder_id in folder_ids:
                 await Chats.delete_chats_by_user_id_and_folder_id(user.id, folder_id)