mirror of
https://github.com/sstent/FitTrack_GarminSync.git
synced 2026-03-16 09:55:48 +00:00
53 lines
1.4 KiB
Python
53 lines
1.4 KiB
Python
from pydantic import BaseModel, Field
|
|
from typing import Optional, Dict, Any
|
|
from datetime import datetime, date
|
|
|
|
from .jobs import SyncJob
|
|
|
|
class UserBase(BaseModel):
|
|
name: str
|
|
email: str
|
|
|
|
class UserCreate(UserBase):
|
|
pass
|
|
|
|
class User(UserBase):
|
|
id: int
|
|
preferences: Optional[Dict[str, Any]] = None
|
|
|
|
class Config:
|
|
from_attributes = True
|
|
|
|
class TokenBase(BaseModel):
|
|
access_token: str
|
|
refresh_token: str
|
|
expires_at: int # Unix timestamp
|
|
|
|
class TokenCreate(TokenBase):
|
|
user_id: int
|
|
|
|
class TokenUpdate(TokenBase):
|
|
user_id: int
|
|
|
|
class Token(TokenBase):
|
|
id: int
|
|
user_id: int
|
|
created_at: datetime
|
|
updated_at: Optional[datetime] = None
|
|
|
|
class Config:
|
|
from_attributes = True
|
|
|
|
class WorkoutPlan(BaseModel):
|
|
id: int
|
|
user_id: int
|
|
plan_details: Dict[str, Any]
|
|
created_at: datetime
|
|
|
|
class ActivitySyncRequest(BaseModel):
|
|
force_resync: bool = Field(False, description="If true, re-download activities even if they exist. Defaults to false.")
|
|
start_date: Optional[date] = Field(None, description="Optional start date (YYYY-MM-DD) to sync activities from. If not provided, syncs recent activities.")
|
|
end_date: Optional[date] = Field(None, description="Optional end date (YYYY-MM-DD) to sync activities up to.")
|
|
|
|
class WorkoutUploadRequest(BaseModel):
|
|
workout_id: int = Field(..., description="The ID of the workout to upload from CentralDB.") |