datamodel.py

Wed, 29 Jul 2020 23:45:53 +0300

author
Teemu Piippo <teemu@hecknology.net>
date
Wed, 29 Jul 2020 23:45:53 +0300
changeset 1
f9788970fa46
child 2
7378b802ddf8
permissions
-rw-r--r--

begin work on bus compiler

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