class ThirdPartyLicense(Schema): __table_name__ = 'third_party_license' __order__ = ( 'id', 'used', 'show', 'third_party_name', 'third_party_url', 'third_party_version', 'license_name', 'license_url', 'license_text', 'license_note', ) id = Field(Integer, primary_key=True, on_json=False) third_party_name = Field(String) used = Field(Boolean) show = Field(Boolean) third_party_url = Field(Url) third_party_version = Field(String) license_name = Field(String) license_url = Field(Url) license_text = Field(String) license_note = Field(String)
class Category(Schema): __table_name__ = 'categories' __order__ = ( 'id', 'name', 'description', ) id = Field(Integer, primary_key=True) name = Field(String) description = Field(String)
class C2cMapAssociations(Schema): __table_name__ = 'c2c_map_associations' __order__ = ( 'document_id', 'topo_map_id', ) document_id = Field(Integer, nullable=False, primary_key=True) # Integer -> INTEGER # Foreign Keys: ['guidebook.documents.document_id'] topo_map_id = Field(Integer, nullable=False, primary_key=True)
class C2cAreaAssociations(Schema): __table_name__ = 'c2c_area_associations' __order__ = ( 'area_id', 'document_id', ) area_id = Field(Integer, nullable=False, primary_key=True) # Integer -> INTEGER # Foreign Keys: ['guidebook.areas.document_id'] document_id = Field(Integer, nullable=False, primary_key=True)
class C2cAreas(Schema): __table_name__ = 'c2c_areas' __order__ = ( 'document_id', 'area_type', ) document_id = Field(Integer, nullable=False, primary_key=True) # Integer -> INTEGER # Foreign Keys: ['guidebook.documents.document_id'] area_type = Field(String)
class C2cDocumentsTopics(Schema): __table_name__ = 'c2c_documents_topics' __order__ = ( 'document_locale_id', 'topic_id', ) document_locale_id = Field(Integer, nullable=False, primary_key=True) # Integer -> INTEGER # Foreign Keys: ['guidebook.documents_locales.id'] topic_id = Field(Integer, nullable=False)
class Comment(Schema): __table_name__ = 'comments' __order__ = ( 'id', 'text', 'date', 'blog_id', ) id = Field(Integer, primary_key=True) text = Field(String) date = Field(DateTime) blog_id = Field(Integer, ForeignKey('blogs.id'))
class Directory(Schema): __table_name__ = 'directory' __order__ = ( 'id', 'name', 'parent', ) id = Field(Integer, primary_key=True) name = Field(String) parent = Field(Integer, ForeignKey('directory.id')) keys = RelationShip('Key', order_by='Key.name', back_populates='directory')
class C2cBooks(Schema): __table_name__ = 'c2c_books' __order__ = ( 'document_id', 'activities', 'author', 'book_types', 'editor', 'isbn', 'langs', 'nb_pages', 'publication_date', 'url', ) document_id = Field(Integer, nullable=False, primary_key=True) # Integer -> INTEGER # Foreign Keys: ['guidebook.documents.document_id'] activities = Field(StringList) # ArrayOfEnum -> None # ['skitouring', 'snow_ice_mixed', 'mountain_climbing', 'rock_climbing', 'ice_climbing', 'hiking', 'snowshoeing', 'paragliding', 'mountain_biking', 'via_ferrata', 'slacklining'] author = Field(String) # String -> VARCHAR(100) book_types = Field(StringList) # ArrayOfEnum -> None # ['topo', 'environment', 'historical', 'biography', 'photos-art', 'novel', 'technics', 'tourism', 'magazine'] editor = Field(String) # String -> VARCHAR(100) isbn = Field(String) # String -> VARCHAR(17) langs = Field(StringList) # ARRAY -> VARCHAR(2)[] nb_pages = Field(Integer) # SmallInteger -> SMALLINT publication_date = Field(String) # String -> VARCHAR(100) url = Field(String)
class C2cOutingsLocales(Schema): __table_name__ = 'c2c_outings_locales' __order__ = ( 'id', 'access_comment', 'avalanches', 'conditions', 'conditions_levels', 'hut_comment', 'participants', 'route_description', 'timing', 'weather', ) id = Field(Integer, nullable=False, primary_key=True) # Integer -> INTEGER # Foreign Keys: ['guidebook.documents_locales.id'] access_comment = Field(String) # String -> VARCHAR avalanches = Field(String) # String -> VARCHAR conditions = Field(String) # String -> VARCHAR conditions_levels = Field(String) # String -> VARCHAR hut_comment = Field(String) # String -> VARCHAR participants = Field(String) # String -> VARCHAR route_description = Field(String) # String -> VARCHAR timing = Field(String) # String -> VARCHAR weather = Field(String)
class Key(Schema): __table_name__ = 'key' __order__ = ( 'id', 'name', 'directory_id', 'value', ) id = Field(Integer, primary_key=True) name = Field(String) # pk ??? directory_id = Field(Integer, ForeignKey('directory.id')) value = Field(Variant) directory = RelationShip('Directory', back_populates='keys')
class BleauPlace(Schema): __table_name__ = 'place' __order__ = ( 'id', 'coordinate', 'name', 'category', 'note', ) id = Field(Integer, primary_key=True, on_json=False) coordinate = Field(JsonGeoCoordinate) name = Field(String) category = Field(String) # BleauPlaceCategory = QString note = Field(String)
class C2cWaypointsLocales(Schema): __table_name__ = 'c2c_waypoints_locales' __order__ = ( 'id', 'access', 'access_period', ) id = Field(Integer, nullable=False, primary_key=True) # Integer -> INTEGER # Foreign Keys: ['guidebook.documents_locales.id'] access = Field(String) # String -> VARCHAR access_period = Field(String)
class Blog(Schema): __table_name__ = 'blogs' __order__ = ( 'id', 'text', 'date', 'author_id', ) id = Field(Integer, primary_key=True) text = Field(String) date = Field(DateTime) author_id = Field(Integer, ForeignKey('authors.id')) author = RelationShip('Author', back_populates='blogs') # many-to-one RelationShip
class Author(Schema): __table_name__ = 'authors' __order__ = ( # Fixme: without => rowid is not @0 'id', 'name', 'birthdate', # 'sex', ) id = Field(Integer, primary_key=True) # id = Field(String, primary_key=True) name = Field(String) birthdate = Field(DateTime) # sex = Field(Enum(Sex)) blogs = RelationShip('Blog', order_by='Blog.id', back_populates='author') # one-to-many RelationShip
class C2cUserProfiles(Schema): __table_name__ = 'c2c_user_profiles' __order__ = ( 'document_id', 'activities', 'categories', ) document_id = Field(Integer, nullable=False, primary_key=True) # Integer -> INTEGER # Foreign Keys: ['guidebook.documents.document_id'] activities = Field(StringList) # ArrayOfEnum -> None # ['skitouring', 'snow_ice_mixed', 'mountain_climbing', 'rock_climbing', 'ice_climbing', 'hiking', 'snowshoeing', 'paragliding', 'mountain_biking', 'via_ferrata', 'slacklining'] categories = Field(StringList)
class C2cDocuments(Schema): __table_name__ = 'c2c_documents' __order__ = ( 'document_id', 'protected_flag', 'quality', 'redirects_to', 'type', 'version', ) document_id = Field(Integer, nullable=False, primary_key=True) # Integer -> INTEGER protected_flag = Field(Boolean, nullable=False, json_name='protected', sql_name='protected') # Boolean -> BOOLEAN quality = Field(String, nullable=False) # Enum -> VARCHAR(6) # ['empty', 'draft', 'medium', 'fine', 'great'] redirects_to = Field(Integer) # Integer -> INTEGER # Foreign Keys: ['guidebook.documents.document_id'] type = Field(Char) # String -> VARCHAR(1) version = Field(Integer, nullable=False)
class C2cDocumentsGeometries(Schema): __table_name__ = 'c2c_documents_geometries' __order__ = ( 'document_id', 'geom', 'geom_detail', 'version', ) document_id = Field(Integer, nullable=False, primary_key=True) # Integer -> INTEGER # Foreign Keys: ['guidebook.documents.document_id'] geom = Field(String) # Geometry -> geometry(POINT,3857) geom_detail = Field(String) # Geometry -> geometry(GEOMETRY,3857) version = Field(Integer, nullable=False)
class C2cMaps(Schema): __table_name__ = 'c2c_maps' __order__ = ( 'document_id', 'code', 'editor', 'scale', ) document_id = Field(Integer, nullable=False, primary_key=True) # Integer -> INTEGER # Foreign Keys: ['guidebook.documents.document_id'] code = Field(String) # String -> VARCHAR editor = Field(String) # Enum -> VARCHAR(13) # ['IGN', 'Swisstopo', 'Escursionista'] scale = Field(String)
class C2cAssociations(Schema): __table_name__ = 'c2c_associations' __order__ = ( 'child_document_id', 'parent_document_id', 'child_document_type', 'parent_document_type', ) child_document_id = Field(Integer, nullable=False, primary_key=True) # Integer -> INTEGER # Foreign Keys: ['guidebook.documents.document_id'] parent_document_id = Field(Integer, nullable=False, primary_key=True) # Integer -> INTEGER # Foreign Keys: ['guidebook.documents.document_id'] child_document_type = Field(Char, nullable=False) # String -> VARCHAR(1) parent_document_type = Field(Char, nullable=False)
class C2cRoutesLocales(Schema): __table_name__ = 'c2c_routes_locales' __order__ = ( 'id', 'external_resources', 'gear', 'remarks', 'route_history', 'slackline_anchor1', 'slackline_anchor2', 'slope', 'title_prefix', ) id = Field(Integer, nullable=False, primary_key=True) # Integer -> INTEGER # Foreign Keys: ['guidebook.documents_locales.id'] external_resources = Field(String) # String -> VARCHAR gear = Field(String) # String -> VARCHAR remarks = Field(String) # String -> VARCHAR route_history = Field(String) # String -> VARCHAR slackline_anchor1 = Field(String) # String -> VARCHAR slackline_anchor2 = Field(String) # String -> VARCHAR slope = Field(String) # String -> VARCHAR title_prefix = Field(String)
class C2cDocumentsLocales(Schema): __table_name__ = 'c2c_documents_locales' __order__ = ( 'id', 'description', 'document_id', 'lang', 'summary', 'title', 'type', 'version', ) id = Field(Integer, nullable=False, primary_key=True) # Integer -> INTEGER description = Field(String) # String -> VARCHAR document_id = Field(Integer, nullable=False) # Integer -> INTEGER # Foreign Keys: ['guidebook.documents.document_id'] lang = Field(String, nullable=False) # String -> VARCHAR(2) # Foreign Keys: ['guidebook.langs.lang'] summary = Field(String) # String -> VARCHAR title = Field(String, nullable=False) # String -> VARCHAR(150) type = Field(Char) # String -> VARCHAR(1) version = Field(Integer, nullable=False)
class Document(Schema): __table_name__ = 'document' __order__ = ( 'id', 'name', 'author', 'version', 'date', 'description', 'url', 'size', ) id = Field(Integer, primary_key=True) name= Field(String) author= Field(String) version = Field(Integer) date = Field(UnixDateTime) description= Field(String) url = Field(Url) size = Field(Integer)
class C2cDocumentsVersions(Schema): __table_name__ = 'c2c_documents_versions' __order__ = ( 'id', 'document_archive_id', 'document_geometry_archive_id', 'document_id', 'document_locales_archive_id', 'history_metadata_id', 'lang', ) id = Field(Integer, nullable=False, primary_key=True) # Integer -> INTEGER document_archive_id = Field(Integer, nullable=False) # Integer -> INTEGER # Foreign Keys: ['guidebook.documents_archives.id'] document_geometry_archive_id = Field(Integer) # Integer -> INTEGER # Foreign Keys: ['guidebook.documents_geometries_archives.id'] document_id = Field(Integer, nullable=False) # Integer -> INTEGER # Foreign Keys: ['guidebook.documents.document_id'] document_locales_archive_id = Field(Integer, nullable=False) # Integer -> INTEGER # Foreign Keys: ['guidebook.documents_locales_archives.id'] history_metadata_id = Field(Integer, nullable=False) # Integer -> INTEGER # Foreign Keys: ['guidebook.history_metadata.id'] lang = Field(String, nullable=False)
class BleauBoulder(Schema): __table_name__ = 'boulder' __order__ = ( 'id', 'coordinate', 'name', 'comment', 'grade', 'number', 'circuit_id', ) id = Field(Integer, primary_key=True, on_json=False) coordinate = Field(JsonGeoCoordinate) name = Field(String) comment = Field(String) grade = Field(String) # BleauGrade number = Field(String) # BleauWayNumber circuit_id = Field(Integer, ForeignKey('circuit.id'), on_json=False) circuit = RelationShip('BleauCircuit', back_populates='boulders')
class BleauMassif(Schema): __table_name__ = 'massif' __order__ = ( 'id', 'coordinate', 'name', 'access', 'alternative_name', 'chaos_type', 'note', 'parcelles', 'rdv', 'secteur', 'velo', ) id = Field(Integer, primary_key=True, on_json=False) coordinate = Field(JsonGeoCoordinate) name = Field(String) # unique=True access = Field(String) alternative_name = Field(String) chaos_type = Field(String) # BleauChaosType note = Field(String) parcelles = Field(String) rdv = Field(String) secteur = Field(String) velo = Field(String) circuits = RelationShip('BleauCircuit', back_populates='massif')
class C2cUser(Schema): __table_name__ = 'c2c_user' __order__ = ( 'id', 'blocked', 'email', 'email_to_validate', 'email_validated', 'feed_filter_activities', 'feed_followed_only', 'forum_username', 'is_profile_public', 'lang', 'last_modified', 'moderator', 'name', 'password', 'username', 'validation_nonce', 'validation_nonce_expire', ) id = Field(Integer, nullable=False, primary_key=True) # Integer -> INTEGER # Foreign Keys: ['guidebook.user_profiles.document_id'] blocked = Field(Boolean, nullable=False) # Boolean -> BOOLEAN email = Field(String, nullable=False) # String -> VARCHAR(200) email_to_validate = Field(String) # String -> VARCHAR(200) email_validated = Field(Boolean, nullable=False) # Boolean -> BOOLEAN feed_filter_activities = Field(StringList, nullable=False) # ArrayOfEnum -> None # ['skitouring', 'snow_ice_mixed', 'mountain_climbing', 'rock_climbing', 'ice_climbing', 'hiking', 'snowshoeing', 'paragliding', 'mountain_biking', 'via_ferrata', 'slacklining'] feed_followed_only = Field(Boolean, nullable=False) # Boolean -> BOOLEAN forum_username = Field(String, nullable=False) # String -> VARCHAR(25) is_profile_public = Field(Boolean, nullable=False) # Boolean -> BOOLEAN lang = Field(String, nullable=False) # String -> VARCHAR(2) # Foreign Keys: ['guidebook.langs.lang'] last_modified = Field(DateTime, nullable=False) # DateTime -> DATETIME moderator = Field(Boolean, nullable=False) # Boolean -> BOOLEAN name = Field(String, nullable=False) # String -> VARCHAR(200) password = Field(String, nullable=False) # String -> VARCHAR(255) username = Field(String, nullable=False) # String -> VARCHAR(200) validation_nonce = Field(String) # String -> VARCHAR(200) validation_nonce_expire = Field(DateTime)
class Refuge(Schema): __table_name__ = 'refuge' __order__ = ( 'id', 'name', 'short_name', 'altitude', 'description', 'owner', 'guardian', 'picture_path', 'coordinate', 'number_of_places', 'region', 'url', 'phone', ) id = Field(Integer, primary_key=True) name = Field(String) short_name = Field(String) altitude = Field(Integer) description = Field(String) owner = Field(String) guardian = Field(String) picture_path = Field(String) coordinate = Field(JsonGeoCoordinate) number_of_places = Field(String) region = Field(String) url = Field(String) phone = Field(String) first_letter = ComputedField(Char) __has_post_init__ = True __custom_code__ = { # Fixme: Mixin ??? 'cls_decl': CustomCode(""" public: bool operator<(const {{schema.cls_name}} & other) const; QChar first_letter() const { return m_first_letter; } private slots: void set_first_letter(); private: QChar m_first_letter; """), }
class BleauCircuit(Schema): __table_name__ = 'circuit' __order__ = ( 'id', 'coordinate', 'colour', 'creation_date', 'gestion', 'grade', 'massif_id', 'note', 'number', 'opener', 'refection_date', 'refection_note', 'status', 'topos', ) id = Field(Integer, primary_key=True, on_json=False) coordinate = Field(JsonGeoCoordinate) colour = Field(String) creation_date = Field(Integer) # UnsignedInteger gestion = Field(String) grade = Field(String) # BleauAlpineGrade massif_id = Field( Integer, ForeignKey('massif.id'), on_json=False) # Fixme: JSON massif/string vs massif_id/int note = Field(String) number = Field(Integer) # UnsignedInteger opener = Field(String) # BleauOpeners refection_date = Field(Integer) # UnsignedInteger refection_note = Field(String) # BleauRefectionNote status = Field(String) topos = Field(StringList) massif = RelationShip(BleauMassif, back_populates='circuits') boulders = RelationShip(BleauBoulder, back_populates='circuit')
class C2cRoutes(Schema): __table_name__ = 'c2c_routes' __order__ = ( 'document_id', 'activities', 'aid_rating', 'climbing_outdoor_type', 'configuration', 'difficulties_height', 'durations', 'elevation_max', 'elevation_min', 'engagement_rating', 'equipment_rating', 'exposition_rock_rating', 'glacier_gear', 'global_rating', 'height_diff_access', 'height_diff_difficulties', 'height_diff_down', 'height_diff_up', 'hiking_mtb_exposition', 'hiking_rating', 'ice_rating', 'labande_global_rating', 'labande_ski_rating', 'lift_access', 'main_waypoint_id', 'mixed_rating', 'mtb_down_rating', 'mtb_height_diff_portages', 'mtb_length_asphalt', 'mtb_length_trail', 'mtb_up_rating', 'orientations', 'risk_rating', 'rock_free_rating', 'rock_required_rating', 'rock_types', 'route_length', 'route_types', 'ski_exposition', 'ski_rating', 'slackline_height', 'slackline_type', 'snowshoe_rating', 'via_ferrata_rating', ) document_id = Field(Integer, nullable=False, primary_key=True) # Integer -> INTEGER # Foreign Keys: ['guidebook.documents.document_id'] activities = Field(StringList, nullable=False) # ArrayOfEnum -> None # ['skitouring', 'snow_ice_mixed', 'mountain_climbing', 'rock_climbing', 'ice_climbing', 'hiking', 'snowshoeing', 'paragliding', 'mountain_biking', 'via_ferrata', 'slacklining'] aid_rating = Field(String) # Enum -> VARCHAR(3) # ['A0', 'A0+', 'A1', 'A1+', 'A2', 'A2+', 'A3', 'A3+', 'A4', 'A4+', 'A5', 'A5+'] climbing_outdoor_type = Field(String) # Enum -> VARCHAR(9) # ['single', 'multi', 'bloc', 'psicobloc'] configuration = Field(StringList) # ArrayOfEnum -> None # ['edge', 'pillar', 'face', 'corridor', 'goulotte', 'glacier'] difficulties_height = Field(Integer) # SmallInteger -> SMALLINT durations = Field(StringList) # ArrayOfEnum -> None # ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '10+'] elevation_max = Field(Integer) # SmallInteger -> SMALLINT elevation_min = Field(Integer) # SmallInteger -> SMALLINT engagement_rating = Field(String) # Enum -> VARCHAR(3) # ['I', 'II', 'III', 'IV', 'V', 'VI'] equipment_rating = Field(String) # Enum -> VARCHAR(3) # ['P1', 'P1+', 'P2', 'P2+', 'P3', 'P3+', 'P4', 'P4+'] exposition_rock_rating = Field(String) # Enum -> VARCHAR(2) # ['E1', 'E2', 'E3', 'E4', 'E5', 'E6'] glacier_gear = Field(String, nullable=False) # Enum -> VARCHAR(19) # ['no', 'glacier_safety_gear', 'crampons_spring', 'crampons_req', 'glacier_crampons'] global_rating = Field(String) # Enum -> VARCHAR(3) # ['F', 'F+', 'PD-', 'PD', 'PD+', 'AD-', 'AD', 'AD+', 'D-', 'D', 'D+', 'TD-', 'TD', 'TD+', 'ED-', 'ED', 'ED+', 'ED4', 'ED5', 'ED6', 'ED7'] height_diff_access = Field(Integer) # SmallInteger -> SMALLINT height_diff_difficulties = Field(Integer) # SmallInteger -> SMALLINT height_diff_down = Field(Integer) # SmallInteger -> SMALLINT height_diff_up = Field(Integer) # SmallInteger -> SMALLINT hiking_mtb_exposition = Field(String) # Enum -> VARCHAR(2) # ['E1', 'E2', 'E3', 'E4'] hiking_rating = Field(String) # Enum -> VARCHAR(2) # ['T1', 'T2', 'T3', 'T4', 'T5'] ice_rating = Field(String) # Enum -> VARCHAR(2) # ['1', '2', '3', '3+', '4', '4+', '5', '5+', '6', '6+', '7', '7+'] labande_global_rating = Field(String) # Enum -> VARCHAR(3) # ['F', 'F+', 'PD-', 'PD', 'PD+', 'AD-', 'AD', 'AD+', 'D-', 'D', 'D+', 'TD-', 'TD', 'TD+', 'ED-', 'ED', 'ED+', 'ED4', 'ED5', 'ED6', 'ED7'] labande_ski_rating = Field(String) # Enum -> VARCHAR(2) # ['S1', 'S2', 'S3', 'S4', 'S5', 'S6', 'S7'] lift_access = Field(Boolean) # Boolean -> BOOLEAN main_waypoint_id = Field(Integer) # Integer -> INTEGER # Foreign Keys: ['guidebook.documents.document_id'] mixed_rating = Field(String) # Enum -> VARCHAR(4) # ['M1', 'M2', 'M3', 'M3+', 'M4', 'M4+', 'M5', 'M5+', 'M6', 'M6+', 'M7', 'M7+', 'M8', 'M8+', 'M9', 'M9+', 'M10', 'M10+', 'M11', 'M11+', 'M12', 'M12+'] mtb_down_rating = Field(String) # Enum -> VARCHAR(2) # ['V1', 'V2', 'V3', 'V4', 'V5'] mtb_height_diff_portages = Field(Integer) # Integer -> INTEGER mtb_length_asphalt = Field(Integer) # Integer -> INTEGER mtb_length_trail = Field(Integer) # Integer -> INTEGER mtb_up_rating = Field(String) # Enum -> VARCHAR(2) # ['M1', 'M2', 'M3', 'M4', 'M5'] orientations = Field(StringList) # ArrayOfEnum -> None # ['N', 'NE', 'E', 'SE', 'S', 'SW', 'W', 'NW'] risk_rating = Field(String) # Enum -> VARCHAR(2) # ['X1', 'X2', 'X3', 'X4', 'X5'] rock_free_rating = Field(String) # Enum -> VARCHAR(3) # ['2', '3a', '3b', '3c', '4a', '4b', '4c', '5a', '5a+', '5b', '5b+', '5c', '5c+', '6a', '6a+', '6b', '6b+', '6c', '6c+', '7a', '7a+', '7b', '7b+', '7c', '7c+', '8a', '8a+', '8b', '8b+', '8c', '8c+', '9a', '9a+', '9b', '9b+', '9c', '9c+'] rock_required_rating = Field(String) # Enum -> VARCHAR(3) # ['2', '3a', '3b', '3c', '4a', '4b', '4c', '5a', '5a+', '5b', '5b+', '5c', '5c+', '6a', '6a+', '6b', '6b+', '6c', '6c+', '7a', '7a+', '7b', '7b+', '7c', '7c+', '8a', '8a+', '8b', '8b+', '8c', '8c+', '9a', '9a+', '9b', '9b+', '9c', '9c+'] rock_types = Field(StringList) # ArrayOfEnum -> None # ['basalte', 'calcaire', 'conglomerat', 'craie', 'gneiss', 'gres', 'granit', 'migmatite', 'mollasse_calcaire', 'pouding', 'quartzite', 'rhyolite', 'schiste', 'trachyte', 'artificial'] route_length = Field(Integer) # Integer -> INTEGER route_types = Field(StringList) # ArrayOfEnum -> None # ['return_same_way', 'loop', 'loop_hut', 'traverse', 'raid', 'expedition'] ski_exposition = Field(String) # Enum -> VARCHAR(2) # ['E1', 'E2', 'E3', 'E4'] ski_rating = Field(String) # Enum -> VARCHAR(3) # ['1.1', '1.2', '1.3', '2.1', '2.2', '2.3', '3.1', '3.2', '3.3', '4.1', '4.2', '4.3', '5.1', '5.2', '5.3', '5.4', '5.5', '5.6'] slackline_height = Field(Integer) # SmallInteger -> SMALLINT slackline_type = Field(String) # Enum -> VARCHAR(9) # ['slackline', 'highline', 'waterline'] snowshoe_rating = Field(String) # Enum -> VARCHAR(2) # ['R1', 'R2', 'R3', 'R4', 'R5'] via_ferrata_rating = Field(String)