# services/external/app/models/city_weather.py """ City Weather Data Model - Shared city-based weather storage """ from sqlalchemy import Column, String, Float, DateTime, Text, Index from sqlalchemy.dialects.postgresql import UUID, JSONB from datetime import datetime import uuid from app.core.database import Base class CityWeatherData(Base): """City-based historical weather data""" __tablename__ = "city_weather_data" id = Column(UUID(as_uuid=True), primary_key=True, default=uuid.uuid4) city_id = Column(String(50), nullable=False, index=True) date = Column(DateTime(timezone=True), nullable=False, index=True) temperature = Column(Float, nullable=True) precipitation = Column(Float, nullable=True) humidity = Column(Float, nullable=True) wind_speed = Column(Float, nullable=True) pressure = Column(Float, nullable=True) description = Column(String(200), nullable=True) source = Column(String(50), nullable=False) raw_data = Column(JSONB, nullable=True) created_at = Column(DateTime(timezone=True), default=datetime.utcnow) updated_at = Column(DateTime(timezone=True), default=datetime.utcnow, onupdate=datetime.utcnow) __table_args__ = ( Index('idx_city_weather_lookup', 'city_id', 'date'), )