Files
healthy-fit/backend/app/api/v1/endpoints/users.py
Carlos Escalante bd91eb4171 Migrate frontend to TypeScript and extend user profile
Converted frontend codebase from JavaScript to TypeScript, including pages, components, and context. Added new layout and UI kit components. Updated backend user model and schemas to support profile fields (firstname, lastname, age, gender, height, weight, unit_preference) and added endpoints for reading/updating current user. Introduced food log listing endpoint and migration script for user table. Updated dependencies and build configs for TypeScript and Tailwind v4.
2026-01-18 19:01:00 -06:00

67 lines
1.5 KiB
Python

from typing import Any
from fastapi import APIRouter, Depends, HTTPException
from sqlmodel import Session, select
from app.api import deps
from app.core import security
from app.models.user import User
from app.schemas.user import UserCreate, UserRead, UserUpdate
router = APIRouter()
@router.post("/", response_model=UserRead)
def create_user(
*,
session: Session = Depends(deps.get_session),
user_in: UserCreate,
) -> Any:
"""
Create new user.
"""
user = session.exec(select(User).where(User.email == user_in.email)).first()
if user:
raise HTTPException(
status_code=400,
detail="The user with this email already exists in the system",
)
user = User(
email=user_in.email,
username=user_in.username,
password_hash=security.get_password_hash(user_in.password),
)
session.add(user)
session.commit()
session.refresh(user)
return user
@router.get("/me", response_model=UserRead)
def read_user_me(
current_user: deps.CurrentUser,
) -> Any:
"""
Get current user.
"""
return current_user
@router.put("/me", response_model=UserRead)
def update_user_me(
*,
session: Session = Depends(deps.get_session),
user_in: UserUpdate,
current_user: deps.CurrentUser,
) -> Any:
"""
Update own user.
"""
user_data = user_in.model_dump(exclude_unset=True)
current_user.sqlmodel_update(user_data)
session.add(current_user)
session.commit()
session.refresh(current_user)
return current_user