class EnvirocarTrackModel(db.Model): __tablename__ = ec_tables['tracks'] logger.info('table name for tracks: {}'.format(__tablename__)) track_id = db.Column(db.String, unique=True, primary_key=True, index=True) sensor_id = db.Column(db.String, db.ForeignKey('{}.sensor_id'.format( ec_tables['sensors'])), nullable=False, index=True) track_length = db.Column(db.Float(asdecimal=True)) geom = db.Column(Geometry(geometry_type='LINESTRING', srid=4326, spatial_index=True), nullable=True) tracks_statistics = db.relationship('EnvirocarTrackStatisticModel', backref='{}'.format( ec_tables['tracks']), lazy='dynamic') tracks_measurements = db.relationship('EnvirocarTrackMeasurementModel', backref='{}'.format( ec_tables['tracks']), lazy='dynamic') tracks_features = db.relationship('EnvirocarTrackFeatureModel', backref='{}'.format(ec_tables['tracks']), lazy='dynamic') def __repr__(self): return '<track {}>'.format(self.track_id) def __hash__(self): return hash(self.track_id)
class EnvirocarSensorModel(db.Model): __tablename__ = ec_tables['sensors'] logger.info('table name for sensors: {}'.format(__tablename__)) sensor_id = db.Column(db.String, unique=True, primary_key=True, index=True) sensor_type = db.Column(db.String, nullable=False) car_model = db.Column(db.String, nullable=False) car_manufacturer = db.Column(db.String, nullable=False) fuel_type = db.Column(db.String, nullable=False) construction_year = db.Column(db.Integer, nullable=False) wiki_hashes = db.Column(ARRAY(db.CHAR(length=32)), nullable=True) track_ids = db.relationship('EnvirocarTrackModel', backref='{}'.format(ec_tables['sensors']), lazy='dynamic') sensors_statistics = db.relationship('EnvirocarSensorStatisticModel', backref='{}'.format( ec_tables['sensors']), lazy='dynamic') tracks_measurements = db.relationship('EnvirocarTrackMeasurementModel', backref='{}'.format( ec_tables['sensors']), lazy='dynamic') tracks_features = db.relationship('EnvirocarTrackFeatureModel', backref='{}'.format( ec_tables['sensors']), lazy='dynamic') def __repr__(self): return '<sensors id {}>'.format(self.sensor_id) def __hash__(self): return hash(self.sensor_id)
class EnvirocarTrackFeatureModel(db.Model): __tablename__ = ec_tables['tracks_features'] logger.info('table name for track geometries: {}'.format(__tablename__)) track_measurement_id = db.Column(db.String, index=True, unique=True, nullable=False, primary_key=True) sensor_id = db.Column(db.String, db.ForeignKey('{}.sensor_id'.format( ec_tables['sensors'])), nullable=False, index=True) track_id = db.Column(db.String, db.ForeignKey('{}.track_id'.format( ec_tables['tracks'])), nullable=False, index=True) geom = db.Column( Geometry(geometry_type='POINT', srid=4326, spatial_index=True)) tracks_features = db.relationship('EnvirocarTrackMeasurementModel', backref='{}'.format( ec_tables['tracks_features']), lazy='dynamic') def __repr__(self): return '<track geometries with id {}>'.format(self.country_name) def __hash__(self): return hash(self.country_name)
class CarCategoryModel(db.Model): __tablename__ = wiki_category_table logger.info('table name for sensors: {}'.format(__tablename__)) category_short_eu = db.Column(db.String, primary_key=True, unique=True, nullable=False, index=True) category_name_de = db.Column(db.String, unique=True, nullable=False, index=True) category_name_en = db.Column(db.String, unique=True, nullable=False, index=True) car_models = db.relationship('WikiCarModel', backref='{}'.format(wiki_category_table), lazy='dynamic') wiki_car_page_texts = db.relationship( 'WikiCarPageTextModel', backref='{}'.format(wiki_category_table), lazy='dynamic') carfueldata_av_statistics = db.relationship( 'CarFuelDataAverageCategoryStatisticsModel', backref='{}'.format(wiki_category_table), lazy='dynamic') average_category_statistics = db.relationship( 'EnvirocarAverageCategoryStatisticsModel', backref='{}'.format(wiki_category_table), lazy='dynamic') def __repr__(self): return '<category wiki {}>'.format(self.category_short_eu) def __hash__(self): return hash(self.category_short_eu)
class CountryDataModel(db.Model): __tablename__ = countries_table logger.info('table name for countries: {}'.format(__tablename__)) country_name = db.Column(db.String, unique=True, primary_key=True, index=True, nullable=False) country_alpha_2 = db.Column(db.String, unique=True, primary_key=True, index=True) country_alpha_3 = db.Column(db.String, unique=True, primary_key=True, index=True, nullable=True) country_numeric = db.Column(db.Integer, primary_key=True, index=True, nullable=True) country_currency_code = db.Column(db.String, primary_key=True, index=True, nullable=True) country_currency_name = db.Column(db.String, primary_key=True, index=True, nullable=True) geom = db.Column( Geometry(geometry_type='MULTIPOLYGON', srid=4326, spatial_index=True)) country_prices = db.relationship('EurostatCountryPriceModel', lazy='dynamic') def __repr__(self): return '<country_code {}>'.format(self.country_name) def __hash__(self): return hash(self.country_name)
class EnvirocarPhenomenonModel(db.Model): __tablename__ = ec_tables['phenomenons'] logger.info('table name for phenomenons: {}'.format(__tablename__)) name = db.Column(db.String, unique=True, primary_key=True) unit = db.Column(db.String, nullable=False) sensors_statistics = db.relationship('EnvirocarSensorStatisticModel', backref='{}'.format( ec_tables['phenomenons']), lazy='dynamic') tracks_measurements = db.relationship('EnvirocarTrackMeasurementModel', backref='{}'.format( ec_tables['phenomenons']), lazy='dynamic') tracks_statistics = db.relationship('EnvirocarTrackStatisticModel', backref='{}'.format( ec_tables['phenomenons']), lazy='dynamic') average_vehicle_type_statistics = db.relationship( 'EnvirocarAverageVehicleTypeStatisticModel', backref='{}'.format(ec_tables['phenomenons']), lazy='dynamic') average_manufacturer_statistics = db.relationship( 'EnvirocarAverageManufacturerStatisticModel', backref='{}'.format(ec_tables['phenomenons']), lazy='dynamic') average_category_statistics = db.relationship( 'EnvirocarAverageCategoryStatisticsModel', backref='{}'.format(ec_tables['phenomenons']), lazy='dynamic') def __repr__(self): return '<phenomenon name {}>'.format(self.name) def __hash__(self): return hash(self.name)