mirror of
https://github.com/escalante29/healthy-fit.git
synced 2026-03-21 10:48:46 +01:00
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.
67 lines
1.5 KiB
Python
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
|