33 lines
955 B
Python
33 lines
955 B
Python
from datetime import datetime
|
|
|
|
from pydantic import BaseModel, Field
|
|
|
|
|
|
class WeatherDataIn(BaseModel):
|
|
"""Payload accepted by POST /data."""
|
|
|
|
station_name: str = Field(..., description="Name of the weather station")
|
|
temperature: float | None = Field(None, description="Temperature in Celsius")
|
|
pressure: float | None = Field(None, description="Atmospheric pressure in hPa")
|
|
relative_humidity: float | None = Field(
|
|
None, description="Relative humidity in percent (0-100)"
|
|
)
|
|
|
|
|
|
class WeatherRecordOut(BaseModel):
|
|
"""Record returned by the API (includes server-assigned fields)."""
|
|
|
|
id: int
|
|
station_name: str
|
|
temperature: float | None
|
|
pressure: float | None
|
|
relative_humidity: float | None
|
|
received_at: datetime
|
|
|
|
|
|
class WeatherHistoryResponse(BaseModel):
|
|
"""Wrapper for history queries — always returns a list (empty if no data)."""
|
|
|
|
station_name: str
|
|
records: list[WeatherRecordOut]
|