From cdee74210e4138a6cb3d7e2154439d13b3988607 Mon Sep 17 00:00:00 2001 From: IluaAir Date: Tue, 29 Jul 2025 00:25:34 +0300 Subject: [PATCH] fix user or admin dep --- src/api/v1/users.py | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/src/api/v1/users.py b/src/api/v1/users.py index 9131fac..41f2d87 100644 --- a/src/api/v1/users.py +++ b/src/api/v1/users.py @@ -1,5 +1,7 @@ from fastapi import APIRouter +from fastapi import HTTPException, Body +from src.schemas.users import UserUpdate, User from src.api.dependacies.user_dep import ActiveUser, AdminUser, CurrentOrAdmin from src.api.dependacies.db_dep import sessionDep from src.core.settings import settings @@ -23,3 +25,19 @@ async def get_all_users(db: sessionDep, _: AdminUser): async def get_user_by_id(db: sessionDep, id: int, _: CurrentOrAdmin): user = await UserService(db).get_user_by_filter_or_raise(id=id) return user + + +@router.patch("/{id}") +async def patch_user( + db: sessionDep, + id: int, + user_update: UserUpdate = Body(), + _: CurrentOrAdmin = None, +): + user = await UserService(db).get_user_by_filter_or_raise(id=id) + update_data = user_update.model_dump(exclude_unset=True) + if not update_data: + raise HTTPException(status_code=400, detail="No fields provided for update") + updated_user = await db.user.update_one(id=id, data=update_data) + await db.commit() + return User.model_validate(updated_user)