from fastapi import APIRouter, Body from src.api.dependacies.db_dep import sessionDep from src.api.dependacies.user_dep import ( ActiveUser, AdminUser, OwnerDep, ) from src.core.settings import settings from src.schemas.users import UserUpdate from src.services.users import UserService router = APIRouter(prefix=settings.api.v1.users, tags=["Users"]) @router.get("/me") async def get_me(user: ActiveUser): return user @router.get("/") async def get_all_users(session: sessionDep, _: AdminUser): users = await UserService(session).get_all_users() return users @router.get("/{id}") async def get_user_by_id(session: sessionDep, id: int, _: OwnerDep): user = await UserService(session).get_user_by_filter_or_raise(id=id) return user @router.patch("/{id}") async def patch_user( session: sessionDep, id: int, _: OwnerDep, user_update: UserUpdate = Body(), ): updated_user = await UserService(session).update_user( id=id, update_data=user_update ) return updated_user @router.delete("/{id}") async def delete_user(session: sessionDep, id: int, _: AdminUser): await UserService(session).delete_user(id) return {"message": "User deleted successfully"}