from fastapi import APIRouter from sqlmodel import select from app.deps import CurrentUserDep, SessionDep from app.models import User from app.schemas import GoalsUpdate, UserRead, UserSummary router = APIRouter(prefix="/api/users", tags=["users"]) @router.get("", response_model=list[UserSummary]) def list_users(current_user: CurrentUserDep, session: SessionDep): users = session.exec(select(User).where(User.id != current_user.id).order_by(User.username)).all() return [UserSummary(username=user.username) for user in users] @router.get("/me", response_model=UserRead) def read_current_user(current_user: CurrentUserDep): return current_user @router.put("/me/goals", response_model=UserRead) def update_goals(goals: GoalsUpdate, current_user: CurrentUserDep, session: SessionDep): current_user.calorie_goal = goals.calorie_goal current_user.protein_goal = goals.protein_goal current_user.carbs_goal = goals.carbs_goal current_user.fat_goal = goals.fat_goal session.add(current_user) session.commit() session.refresh(current_user) return current_user