mirror of
https://github.com/sstent/AICyclingCoach.git
synced 2026-01-25 16:41:58 +00:00
46 lines
1.1 KiB
Python
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 |