init
This commit is contained in:
0
backend/app/schemas/__init__.py
Normal file
0
backend/app/schemas/__init__.py
Normal file
52
backend/app/schemas/activity.py
Normal file
52
backend/app/schemas/activity.py
Normal file
@@ -0,0 +1,52 @@
|
||||
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
|
||||
23
backend/app/schemas/auth.py
Normal file
23
backend/app/schemas/auth.py
Normal file
@@ -0,0 +1,23 @@
|
||||
from pydantic import BaseModel
|
||||
|
||||
from backend.app.schemas.rider import RiderResponse
|
||||
|
||||
|
||||
class TelegramLoginRequest(BaseModel):
|
||||
id: int
|
||||
first_name: str
|
||||
last_name: str | None = None
|
||||
username: str | None = None
|
||||
photo_url: str | None = None
|
||||
auth_date: int
|
||||
hash: str
|
||||
|
||||
|
||||
class TelegramWebAppRequest(BaseModel):
|
||||
init_data: str
|
||||
|
||||
|
||||
class AuthResponse(BaseModel):
|
||||
access_token: str
|
||||
token_type: str = "bearer"
|
||||
rider: RiderResponse
|
||||
38
backend/app/schemas/rider.py
Normal file
38
backend/app/schemas/rider.py
Normal file
@@ -0,0 +1,38 @@
|
||||
from uuid import UUID
|
||||
|
||||
from pydantic import BaseModel
|
||||
|
||||
|
||||
class RiderCreate(BaseModel):
|
||||
name: str
|
||||
ftp: float | None = None
|
||||
lthr: int | None = None
|
||||
weight: float | None = None
|
||||
goals: str | None = None
|
||||
experience_level: str | None = None
|
||||
|
||||
|
||||
class RiderUpdate(BaseModel):
|
||||
name: str | None = None
|
||||
ftp: float | None = None
|
||||
lthr: int | None = None
|
||||
weight: float | None = None
|
||||
zones_config: dict | None = None
|
||||
goals: str | None = None
|
||||
experience_level: str | None = None
|
||||
|
||||
|
||||
class RiderResponse(BaseModel):
|
||||
model_config = {"from_attributes": True}
|
||||
|
||||
id: UUID
|
||||
telegram_id: int | None = None
|
||||
telegram_username: str | None = None
|
||||
avatar_url: str | None = None
|
||||
name: str
|
||||
ftp: float | None = None
|
||||
lthr: int | None = None
|
||||
weight: float | None = None
|
||||
zones_config: dict | None = None
|
||||
goals: str | None = None
|
||||
experience_level: str | None = None
|
||||
Reference in New Issue
Block a user