06/15 Phase 1 + 2 codes
This commit is contained in:
@@ -0,0 +1,36 @@
|
||||
"""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"<ZipGeo {self.zip} {self.city},{self.state}>"
|
||||
|
||||
|
||||
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"<Metro {self.slug}>"
|
||||
Reference in New Issue
Block a user