50 lines
1.4 KiB
Python
50 lines
1.4 KiB
Python
from pydantic import BaseModel
|
|
from typing import Optional
|
|
from datetime import datetime
|
|
|
|
class WeatherForecastBase(BaseModel):
|
|
location: str
|
|
date: datetime
|
|
temperature: float
|
|
humidity: float
|
|
wind_speed: float
|
|
precipitation_probability: float
|
|
description: str
|
|
|
|
class WeatherForecastCreate(WeatherForecastBase):
|
|
pass
|
|
|
|
class WeatherForecastUpdate(WeatherForecastBase):
|
|
location: Optional[str] = None
|
|
date: Optional[datetime] = None
|
|
temperature: Optional[float] = None
|
|
humidity: Optional[float] = None
|
|
wind_speed: Optional[float] = None
|
|
precipitation_probability: Optional[float] = None
|
|
description: Optional[str] = None
|
|
|
|
class WeatherForecastSchema(BaseModel):
|
|
forecasts: list[WeatherForecastBase] = [
|
|
WeatherForecastBase(
|
|
location="United States",
|
|
date=datetime(2023, 6, 1),
|
|
temperature=25.0,
|
|
humidity=60.0,
|
|
wind_speed=10.0,
|
|
precipitation_probability=0.2,
|
|
description="Partly cloudy"
|
|
),
|
|
WeatherForecastBase(
|
|
location="Canada",
|
|
date=datetime(2023, 6, 1),
|
|
temperature=18.0,
|
|
humidity=70.0,
|
|
wind_speed=8.0,
|
|
precipitation_probability=0.4,
|
|
description="Rainy"
|
|
),
|
|
# Add 8 more forecasts for different countries
|
|
]
|
|
|
|
class Config:
|
|
orm_mode = True |