from datetime import datetime from typing import Optional from sqlmodel import Field, SQLModel class User(SQLModel, table=True): id: Optional[int] = Field(default=None, primary_key=True) username: str = Field(index=True, unique=True) email: str = Field(index=True, unique=True) password_hash: str # Profile Info firstname: Optional[str] = None lastname: Optional[str] = None age: Optional[int] = None gender: Optional[str] = None height: Optional[float] = None weight: Optional[float] = None unit_preference: str = Field(default="metric") # "metric" or "imperial" # Nutrition Targets target_calories: Optional[float] = None target_protein: Optional[float] = None target_carbs: Optional[float] = None target_fat: Optional[float] = None created_at: datetime = Field(default_factory=datetime.utcnow)