fix(notes): eliminate N+1 query in get_notes endpoint

Co-Authored-By: Classic298 <27028174+Classic298@users.noreply.github.com>
This commit is contained in:
Timothy Jaeryang Baek
2026-01-07 23:32:56 +04:00
co-authored by Classic298
parent 0e1edc4c01
commit 084f0ef6a5
+17 -15
View File
@@ -70,21 +70,23 @@ async def get_notes(
limit = 60 limit = 60
skip = (page - 1) * limit skip = (page - 1) * limit
notes = [] notes = Notes.get_notes_by_user_id(user.id, "read", skip=skip, limit=limit, db=db)
for note in Notes.get_notes_by_user_id( if not notes:
user.id, "read", skip=skip, limit=limit, db=db return []
):
note_user = Users.get_user_by_id(note.user_id, db=db) user_ids = list(set(note.user_id for note in notes))
if note_user: users = {user.id: user for user in Users.get_users_by_user_ids(user_ids, db=db)}
notes.append(
NoteUserResponse( return [
**{ NoteUserResponse(
**note.model_dump(), **{
"user": UserResponse(**note_user.model_dump()), **note.model_dump(),
} "user": UserResponse(**users[note.user_id].model_dump()),
) }
) )
return notes for note in notes
if note.user_id in users
]
@router.get("/search", response_model=NoteListResponse) @router.get("/search", response_model=NoteListResponse)