"""Geocoding reference tables. ZipGeo: offline US ZIP -> lat/lng/city/state/metro (source the full ~42k-row dataset from SimpleMaps US ZIP or Census ZCTA; a small sample is seeded for tests). Metro: SEO landing-page anchor (pages built in Phase 7; column wired now). """ from app.extensions import db class ZipGeo(db.Model): __tablename__ = "zip_geo" zip = db.Column(db.String(12), primary_key=True) city = db.Column(db.String(80), nullable=False) state = db.Column(db.String(2), nullable=False, index=True) lat = db.Column(db.Float, nullable=False) lng = db.Column(db.Float, nullable=False) metro = db.Column(db.String(80), nullable=True, index=True) def __repr__(self): return f"" class Metro(db.Model): __tablename__ = "metros" id = db.Column(db.BigInteger().with_variant(db.Integer, "sqlite"), primary_key=True, autoincrement=True) slug = db.Column(db.String(80), unique=True, nullable=False, index=True) name = db.Column(db.String(120), nullable=False) state = db.Column(db.String(2), nullable=True) center_lat = db.Column(db.Float, nullable=True) center_lng = db.Column(db.Float, nullable=True) def __repr__(self): return f""