diff options
| author | Daniel Schadt <kingdread@gmx.de> | 2026-09-30 23:23:55 +0200 |
|---|---|---|
| committer | Daniel Schadt <kingdread@gmx.de> | 2026-09-30 23:23:55 +0200 |
| commit | ad05060f35b72ac188287986863ef359ddcb7f0f (patch) | |
| tree | 57101392d4fd8052d3857a220e4e0960b3343fd7 | |
| parent | 1f9e1d0517266418ea5a61f5c9948783ab0a604a (diff) | |
| download | fietsboek-ad05060f35b72ac188287986863ef359ddcb7f0f.tar.gz fietsboek-ad05060f35b72ac188287986863ef359ddcb7f0f.tar.bz2 fietsboek-ad05060f35b72ac188287986863ef359ddcb7f0f.zip | |
add update scripts for climbs
| -rw-r--r-- | fietsboek/alembic/versions/20260930_b73ed8b45f67.py | 42 | ||||
| -rw-r--r-- | fietsboek/updater/scripts/upd_20260930_7fa8kflikvnlvuqe.py | 59 |
2 files changed, 101 insertions, 0 deletions
diff --git a/fietsboek/alembic/versions/20260930_b73ed8b45f67.py b/fietsboek/alembic/versions/20260930_b73ed8b45f67.py new file mode 100644 index 0000000..c852e97 --- /dev/null +++ b/fietsboek/alembic/versions/20260930_b73ed8b45f67.py @@ -0,0 +1,42 @@ +"""add climbs table + +Revision ID: b73ed8b45f67 +Revises: f9ca03541351 +Create Date: 2026-09-30 19:53:17.788093 + +""" +from alembic import op +import sqlalchemy as sa + + +# revision identifiers, used by Alembic. +revision = 'b73ed8b45f67' +down_revision = 'f9ca03541351' +branch_labels = None +depends_on = None + +def upgrade(): + # ### commands auto generated by Alembic - please adjust! ### + op.create_table('climbs', + sa.Column('id', sa.Integer(), nullable=False), + sa.Column('track_id', sa.Integer(), nullable=False), + sa.Column('automatic_name', sa.Text(), nullable=True), + sa.Column('given_name', sa.Text(), nullable=True), + sa.Column('image', sa.LargeBinary(), nullable=False), + sa.Column('profile', sa.LargeBinary(), nullable=False), + sa.Column('avg_grade', sa.Float(), nullable=False), + sa.Column('length', sa.Float(), nullable=False), + sa.Column('lowest_elevation', sa.Float(), nullable=False), + sa.Column('highest_elevation', sa.Float(), nullable=False), + sa.Column('category', sa.Integer(), nullable=True), + sa.Column('start_index', sa.Integer(), nullable=False), + sa.Column('end_index', sa.Integer(), nullable=False), + sa.ForeignKeyConstraint(['track_id'], ['tracks.id'], name=op.f('fk_climbs_track_id_tracks')), + sa.PrimaryKeyConstraint('id', name=op.f('pk_climbs')) + ) + # ### end Alembic commands ### + +def downgrade(): + # ### commands auto generated by Alembic - please adjust! ### + op.drop_table('climbs') + # ### end Alembic commands ### diff --git a/fietsboek/updater/scripts/upd_20260930_7fa8kflikvnlvuqe.py b/fietsboek/updater/scripts/upd_20260930_7fa8kflikvnlvuqe.py new file mode 100644 index 0000000..f96764b --- /dev/null +++ b/fietsboek/updater/scripts/upd_20260930_7fa8kflikvnlvuqe.py @@ -0,0 +1,59 @@ +"""Revision upgrade script 7fa8kflikvnlvuqe + +Add climbs table + +Date created: 2026-09-30 19:54:52.669074 +""" +import time + +from fietsboek.models import Track +from fietsboek.updater.script import UpdateScript +from fietsboek.views.tileproxy import TileRequester +from fietsboek import actions +from fietsboek import config as mod_config +from fietsboek import osm + +from sqlalchemy import create_engine, select +from sqlalchemy.orm import sessionmaker + +import redis +import requests + + +update_id = '7fa8kflikvnlvuqe' +previous = [ + 'v0.12.1', +] +alembic_revision = 'b73ed8b45f67' + + +class Up(UpdateScript): + def pre_alembic(self, config): + pass + + def post_alembic(self, config): + fietsconfig = mod_config.parse(config) + engine = create_engine(fietsconfig.sqlalchemy_url) + Session = sessionmaker(engine) + + redis_con = redis.from_url(fietsconfig.redis_url) + + layer = fietsconfig.public_tile_layers()[0] + tile_requester = TileRequester(redis_con) + + with Session() as session: + for track in session.execute(select(Track)).scalars(): + self.tell(f"Extracting climbs for track {track.id}") + actions.extract_climbs(session, track, tile_requester, layer) + # Don't hammer the OSM API too much + time.sleep(1) + session.commit() + self.tell("Done extracting climbs") + + +class Down(UpdateScript): + def pre_alembic(self, config): + pass + + def post_alembic(self, config): + pass |
