37 lines
763 B
Python
37 lines
763 B
Python
import uuid
|
|
from datetime import datetime
|
|
from pydantic import BaseModel
|
|
|
|
|
|
class GpsPoint(BaseModel):
|
|
lat: float
|
|
lon: float
|
|
timestamp: datetime | None = None
|
|
altitude: float | None = None
|
|
hdop: float | None = None
|
|
|
|
|
|
class ActivityCreate(BaseModel):
|
|
type: str # run | cycle | walk | hike
|
|
started_at: datetime
|
|
ended_at: datetime
|
|
gps_track: list[GpsPoint]
|
|
|
|
|
|
class ActivityRead(BaseModel):
|
|
id: uuid.UUID
|
|
user_id: uuid.UUID
|
|
type: str
|
|
started_at: datetime | None
|
|
ended_at: datetime | None
|
|
distance_m: float | None
|
|
status: str
|
|
created_at: datetime
|
|
|
|
|
|
class ActivityDetail(ActivityRead):
|
|
"""Activity with zone info attached."""
|
|
|
|
zone_id: uuid.UUID | None = None
|
|
area_m2: float | None = None
|