from typing import Any, List from fastapi import APIRouter, Depends, HTTPException from sqlmodel import Session, select from app.api import deps from app.models.health import HealthMetric from pydantic import BaseModel router = APIRouter() class HealthMetricCreate(BaseModel): metric_type: str value: float unit: str user_id: int # TODO: remove when auth is fully integrated @router.post("/", response_model=HealthMetric) def create_metric( *, session: Session = Depends(deps.get_session), metric_in: HealthMetricCreate, ) -> Any: metric = HealthMetric(metric_type=metric_in.metric_type, value=metric_in.value, unit=metric_in.unit, user_id=metric_in.user_id) session.add(metric) session.commit() session.refresh(metric) return metric @router.get("/{user_id}", response_model=List[HealthMetric]) def read_metrics( user_id: int, session: Session = Depends(deps.get_session), ) -> Any: statement = select(HealthMetric).where(HealthMetric.user_id == user_id) metrics = session.exec(statement).all() return metrics