summit/backend/app/schemas/route.py

30 lines
750 B
Python

from typing import Optional, List
from pydantic import BaseModel
from datetime import datetime
from app.schemas.camp import Camp
class RouteBase(BaseModel):
name: str
difficulty: Optional[str] = None
description: Optional[str] = None
is_standard_route: bool = False
class RouteCreate(RouteBase):
peak_id: int
# GeoJSON LineStringZ: {"type": "LineString", "coordinates": [[lon, lat, ele], ...]}
path_geometry: dict
class RouteUpdate(RouteBase):
path_geometry: Optional[dict] = None
class RouteInDBBase(RouteBase):
id: int
peak_id: int
path_geometry: Optional[dict] = None
created_at: datetime
class Config:
from_attributes = True
class Route(RouteInDBBase):
camps: List[Camp] = []