diff --git a/backend/open_webui/models/notes.py b/backend/open_webui/models/notes.py index 5df49050ac..ae4426e53d 100644 --- a/backend/open_webui/models/notes.py +++ b/backend/open_webui/models/notes.py @@ -74,7 +74,7 @@ class NoteUserResponse(NoteModel): class NoteTable: - def insert_new_note( + async def insert_new_note( self, form_data: NoteForm, user_id: str, @@ -92,8 +92,8 @@ class NoteTable: new_note = Note(**note.model_dump()) - db.add(new_note) - db.commit() + await db.add(new_note) + await db.commit() return note async def get_notes(self) -> list[NoteModel]: @@ -112,16 +112,16 @@ class NoteTable: or await has_access(user_id, permission, note.access_control) ] - def get_note_by_id(self, id: str) -> Optional[NoteModel]: + async def get_note_by_id(self, id: str) -> Optional[NoteModel]: async with get_db() as db: - note = db.query(Note).filter(Note.id == id).first() + note = await db.query(Note).filter(Note.id == id).first() return NoteModel.model_validate(note) if note else None - def update_note_by_id( + async def update_note_by_id( self, id: str, form_data: NoteUpdateForm ) -> Optional[NoteModel]: async with get_db() as db: - note = db.query(Note).filter(Note.id == id).first() + note = await db.query(Note).filter(Note.id == id).first() if not note: return None @@ -139,13 +139,13 @@ class NoteTable: note.updated_at = int(time.time_ns()) - db.commit() + await db.commit() return NoteModel.model_validate(note) if note else None - def delete_note_by_id(self, id: str): + async def delete_note_by_id(self, id: str): async with get_db() as db: - db.query(Note).filter(Note.id == id).delete() - db.commit() + await db.query(Note).filter(Note.id == id).delete() + await db.commit() return True diff --git a/backend/open_webui/retrieval/utils.py b/backend/open_webui/retrieval/utils.py index 69ace9668f..c76da05846 100644 --- a/backend/open_webui/retrieval/utils.py +++ b/backend/open_webui/retrieval/utils.py @@ -512,7 +512,7 @@ def get_sources_from_items( elif item.get("type") == "note": # Note Attached - note = Notes.get_note_by_id(item.get("id")) + note = await Notes.get_note_by_id(item.get("id")) if note and ( user.role == "admin" diff --git a/backend/open_webui/routers/notes.py b/backend/open_webui/routers/notes.py index d151338db8..6209af81d0 100644 --- a/backend/open_webui/routers/notes.py +++ b/backend/open_webui/routers/notes.py @@ -50,7 +50,7 @@ async def get_notes(request: Request, user=Depends(get_verified_user)): ), } ) - for note in Notes.get_notes_by_user_id(user.id, "write") + for note in await Notes.get_notes_by_user_id(user.id, "write") ] return notes @@ -76,7 +76,7 @@ async def get_note_list(request: Request, user=Depends(get_verified_user)): notes = [ NoteTitleIdResponse(**note.model_dump()) - for note in Notes.get_notes_by_user_id(user.id, "write") + for note in await Notes.get_notes_by_user_id(user.id, "write") ] return notes @@ -101,7 +101,7 @@ async def create_new_note( ) try: - note = Notes.insert_new_note(form_data, user.id) + note = await Notes.insert_new_note(form_data, user.id) return note except Exception as e: log.exception(e) @@ -125,7 +125,7 @@ async def get_note_by_id(request: Request, id: str, user=Depends(get_verified_us detail=ERROR_MESSAGES.UNAUTHORIZED, ) - note = Notes.get_note_by_id(id) + note = await Notes.get_note_by_id(id) if not note: raise HTTPException( status_code=status.HTTP_404_NOT_FOUND, detail=ERROR_MESSAGES.NOT_FOUND @@ -163,7 +163,7 @@ async def update_note_by_id( detail=ERROR_MESSAGES.UNAUTHORIZED, ) - note = Notes.get_note_by_id(id) + note = await Notes.get_note_by_id(id) if not note: raise HTTPException( status_code=status.HTTP_404_NOT_FOUND, detail=ERROR_MESSAGES.NOT_FOUND @@ -180,7 +180,7 @@ async def update_note_by_id( ) try: - note = Notes.update_note_by_id(id, form_data) + note = await Notes.update_note_by_id(id, form_data) await sio.emit( "note-events", note.model_dump(), @@ -210,7 +210,7 @@ async def delete_note_by_id(request: Request, id: str, user=Depends(get_verified detail=ERROR_MESSAGES.UNAUTHORIZED, ) - note = Notes.get_note_by_id(id) + note = await Notes.get_note_by_id(id) if not note: raise HTTPException( status_code=status.HTTP_404_NOT_FOUND, detail=ERROR_MESSAGES.NOT_FOUND @@ -227,7 +227,7 @@ async def delete_note_by_id(request: Request, id: str, user=Depends(get_verified ) try: - note = Notes.delete_note_by_id(id) + note = await Notes.delete_note_by_id(id) return True except Exception as e: log.exception(e) diff --git a/backend/open_webui/socket/main.py b/backend/open_webui/socket/main.py index 96217c895a..34bec1be1c 100644 --- a/backend/open_webui/socket/main.py +++ b/backend/open_webui/socket/main.py @@ -337,7 +337,7 @@ async def join_note(sid, data): if not user: return - note = Notes.get_note_by_id(data["note_id"]) + note = await Notes.get_note_by_id(data["note_id"]) if not note: log.error(f"Note {data['note_id']} not found for user {user.id}") return @@ -394,7 +394,7 @@ async def ydoc_document_join(sid, data): if document_id.startswith("note:"): note_id = document_id.split(":")[1] - note = Notes.get_note_by_id(note_id) + note = await Notes.get_note_by_id(note_id) if not note: log.error(f"Note {note_id} not found") return @@ -464,7 +464,7 @@ async def ydoc_document_join(sid, data): async def document_save_handler(document_id, data, user): if document_id.startswith("note:"): note_id = document_id.split(":")[1] - note = Notes.get_note_by_id(note_id) + note = await Notes.get_note_by_id(note_id) if not note: log.error(f"Note {note_id} not found") return