from datetime import datetime from uuid import UUID from pydantic import BaseModel class ActivityMetricsResponse(BaseModel): model_config = {"from_attributes": True} tss: float | None = None normalized_power: float | None = None intensity_factor: float | None = None variability_index: float | None = None avg_power: float | None = None max_power: int | None = None avg_hr: int | None = None max_hr: int | None = None avg_cadence: int | None = None avg_speed: float | None = None class ActivityResponse(BaseModel): model_config = {"from_attributes": True} id: UUID rider_id: UUID name: str | None = None activity_type: str date: datetime duration: int distance: float | None = None elevation_gain: float | None = None metrics: ActivityMetricsResponse | None = None class ActivityListResponse(BaseModel): items: list[ActivityResponse] total: int class DataPointResponse(BaseModel): model_config = {"from_attributes": True} timestamp: datetime power: int | None = None heart_rate: int | None = None cadence: int | None = None speed: float | None = None latitude: float | None = None longitude: float | None = None altitude: float | None = None temperature: int | None = None