from datetime import datetime from pydantic import BaseModel, Field class WeatherDataIn(BaseModel): """Payload accepted by POST /stations/{station_name}/observations. station_name is taken from the URL path, not the request body. """ 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): """A single observation record (includes server-assigned fields).""" id: int station_name: str temperature: float | None pressure: float | None relative_humidity: float | None received_at: datetime class ObservationListResponse(BaseModel): """Response for GET /stations/{station_name}/observations.""" station_name: str count: int records: list[WeatherRecordOut] class StationInfo(BaseModel): """Summary of a known weather station.""" name: str observation_count: int latest_observation_at: datetime | None class StationListResponse(BaseModel): """Response for GET /stations.""" stations: list[StationInfo] count: int