datamodel.py

changeset 1
f9788970fa46
child 2
7378b802ddf8
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/datamodel.py	Wed Jul 29 23:45:53 2020 +0300
@@ -0,0 +1,55 @@
+import sqlalchemy.ext.declarative
+GtfsBase = sqlalchemy.ext.declarative.declarative_base(name = 'GtfsBase')
+
+class GtfsRoute(GtfsBase):
+	__tablename__ = 'routes'
+	id = sqlalchemy.Column(sqlalchemy.String, primary_key = True)
+	reference = sqlalchemy.Column(sqlalchemy.String)
+	description = sqlalchemy.Column(sqlalchemy.String)
+	type = sqlalchemy.Column(sqlalchemy.Integer)
+
+class GtfsShape(GtfsBase):
+	__tablename__ = 'shapes'
+	id = sqlalchemy.Column(sqlalchemy.String, primary_key = True)
+	length = sqlalchemy.Column(sqlalchemy.Numeric, default = 0)
+	shape_coordinates = sqlalchemy.Column(sqlalchemy.String)
+
+class GtfsTrip(GtfsBase):
+	__tablename__ = 'trips'
+	id = sqlalchemy.Column(sqlalchemy.String, primary_key = True)
+	route_id = sqlalchemy.Column(sqlalchemy.String, sqlalchemy.ForeignKey(GtfsRoute.id))
+	service = sqlalchemy.Column(sqlalchemy.String)
+	shape_id = sqlalchemy.Column(sqlalchemy.String, sqlalchemy.ForeignKey(GtfsShape.id))
+	route = sqlalchemy.orm.relationship('GtfsRoute', foreign_keys = 'GtfsTrip.route_id')
+	shape = sqlalchemy.orm.relationship('GtfsShape', foreign_keys = 'GtfsTrip.shape_id')
+
+class GtfsService(GtfsBase):
+	__tablename__ = 'services'
+	id = sqlalchemy.Column(sqlalchemy.String, primary_key = True)
+
+class GtfsStop(GtfsBase):
+	__tablename__ = 'stops'
+	stop_id = sqlalchemy.Column(sqlalchemy.String, primary_key = True)
+	stop_name = sqlalchemy.Column(sqlalchemy.String)
+	stop_latitude = sqlalchemy.Column(sqlalchemy.Numeric)
+	stop_longitude = sqlalchemy.Column(sqlalchemy.Numeric)
+	stop_region = sqlalchemy.Column(sqlalchemy.String)
+	stop_region_major = sqlalchemy.Column(sqlalchemy.Boolean)
+
+class GtfsRegion(GtfsBase):
+	# Not a gtfs data set, but the Gtfs prefix added for consistency
+	__tablename__ = 'regions'
+	region_name = sqlalchemy.Column(sqlalchemy.String, primary_key = True)
+	region_name_sv = sqlalchemy.Column(sqlalchemy.String)
+	region_name_en = sqlalchemy.Column(sqlalchemy.String)
+	region_name_ja = sqlalchemy.Column(sqlalchemy.String)
+	region_short_name = sqlalchemy.Column(sqlalchemy.String)
+	region_short_name_sv = sqlalchemy.Column(sqlalchemy.String)
+	region_short_name_en = sqlalchemy.Column(sqlalchemy.String)
+	region_short_name_ja = sqlalchemy.Column(sqlalchemy.String)
+	region_internal_name = sqlalchemy.Column(sqlalchemy.String)
+	region_internal_name_sv = sqlalchemy.Column(sqlalchemy.String)
+	region_internal_name_en = sqlalchemy.Column(sqlalchemy.String)
+	region_internal_name_ja = sqlalchemy.Column(sqlalchemy.String)
+	municipality = sqlalchemy.Column(sqlalchemy.String, nullable = False)
+	external = sqlalchemy.Column(sqlalchemy.Boolean)

mercurial