summit/backend/app/schemas/peak.py

37 lines
975 B
Python

from typing import Optional, List
from pydantic import BaseModel, Field
from datetime import datetime
# Shared properties
class PeakBase(BaseModel):
name_en: str
name_cn: Optional[str] = None
elevation_m: int
prominence_m: Optional[int] = None
first_ascent_year: Optional[int] = None
description: Optional[str] = None
thumbnail_url: Optional[str] = None
# Properties to receive on item creation
class PeakCreate(PeakBase):
# GeoJSON Point: {"type": "Point", "coordinates": [lon, lat]}
location: dict
# Properties to receive on item update
class PeakUpdate(PeakBase):
location: Optional[dict] = None
# Properties shared by models stored in DB
class PeakInDBBase(PeakBase):
id: int
location: Optional[dict] = None # We will convert WKB to GeoJSON in crud
created_at: datetime
updated_at: datetime
class Config:
from_attributes = True
# Properties to return to client
class Peak(PeakInDBBase):
pass