Files
AICyclingCoach/backend/app/schemas/workout.py
2025-09-09 06:04:29 -07:00

46 lines
1.1 KiB
Python

from pydantic import BaseModel
from typing import Optional, Dict, Any
from datetime import datetime
class WorkoutMetric(BaseModel):
timestamp: datetime
heart_rate: Optional[int] = None
power: Optional[float] = None
cadence: Optional[float] = None
class WorkoutBase(BaseModel):
garmin_activity_id: str
activity_type: Optional[str] = None
start_time: datetime
duration_seconds: Optional[int] = None
distance_m: Optional[float] = None
avg_hr: Optional[int] = None
max_hr: Optional[int] = None
avg_power: Optional[float] = None
max_power: Optional[float] = None
avg_cadence: Optional[float] = None
elevation_gain_m: Optional[float] = None
metrics: Optional[Dict[str, Any]] = None
class WorkoutCreate(WorkoutBase):
plan_id: Optional[int] = None
class Workout(WorkoutBase):
id: int
plan_id: Optional[int] = None
class Config:
orm_mode = True
class WorkoutSyncStatus(BaseModel):
status: str
last_sync_time: Optional[datetime] = None
activities_synced: int = 0
error_message: Optional[str] = None
class Config:
orm_mode = True