many updates

This commit is contained in:
2026-01-13 09:42:16 -08:00
parent 4bb86b603e
commit 362f4cb5aa
81 changed files with 3106 additions and 336 deletions

View File

@@ -0,0 +1,58 @@
"""add_extended_fit_metrics
Revision ID: 09c17c0f0e9e
Revises: b43006af329e
Create Date: 2026-01-12 07:34:07.760775
"""
from typing import Sequence, Union
from alembic import op
import sqlalchemy as sa
# revision identifiers, used by Alembic.
revision: str = '09c17c0f0e9e'
down_revision: Union[str, None] = 'b43006af329e'
branch_labels: Union[str, Sequence[str], None] = None
depends_on: Union[str, Sequence[str], None] = None
def upgrade() -> None:
# ### commands auto generated by Alembic - please adjust! ###
op.add_column('activities', sa.Column('total_work', sa.Float(), nullable=True))
op.add_column('activities', sa.Column('intensity_factor', sa.Float(), nullable=True))
op.add_column('activities', sa.Column('threshold_power', sa.Integer(), nullable=True))
op.add_column('activities', sa.Column('avg_left_pedal_smoothness', sa.Float(), nullable=True))
op.add_column('activities', sa.Column('avg_right_pedal_smoothness', sa.Float(), nullable=True))
op.add_column('activities', sa.Column('avg_left_torque_effectiveness', sa.Float(), nullable=True))
op.add_column('activities', sa.Column('avg_right_torque_effectiveness', sa.Float(), nullable=True))
op.add_column('activities', sa.Column('grit', sa.Float(), nullable=True))
op.add_column('activities', sa.Column('flow', sa.Float(), nullable=True))
op.add_column('activities', sa.Column('avg_respiration_rate', sa.Float(), nullable=True))
op.add_column('activities', sa.Column('max_respiration_rate', sa.Float(), nullable=True))
op.add_column('activities', sa.Column('avg_stress', sa.Float(), nullable=True))
op.add_column('activities', sa.Column('avg_spo2', sa.Float(), nullable=True))
op.add_column('activities', sa.Column('total_strokes', sa.Integer(), nullable=True))
op.add_column('activities', sa.Column('avg_stroke_distance', sa.Float(), nullable=True))
# ### end Alembic commands ###
def downgrade() -> None:
# ### commands auto generated by Alembic - please adjust! ###
op.drop_column('activities', 'avg_stroke_distance')
op.drop_column('activities', 'total_strokes')
op.drop_column('activities', 'avg_spo2')
op.drop_column('activities', 'avg_stress')
op.drop_column('activities', 'max_respiration_rate')
op.drop_column('activities', 'avg_respiration_rate')
op.drop_column('activities', 'flow')
op.drop_column('activities', 'grit')
op.drop_column('activities', 'avg_right_torque_effectiveness')
op.drop_column('activities', 'avg_left_torque_effectiveness')
op.drop_column('activities', 'avg_right_pedal_smoothness')
op.drop_column('activities', 'avg_left_pedal_smoothness')
op.drop_column('activities', 'threshold_power')
op.drop_column('activities', 'intensity_factor')
op.drop_column('activities', 'total_work')
# ### end Alembic commands ###

View File

@@ -0,0 +1,32 @@
"""Add is_estimated_power
Revision ID: 0c82944705e9
Revises: 09c17c0f0e9e
Create Date: 2026-01-12 17:52:22.138566
"""
from typing import Sequence, Union
from alembic import op
import sqlalchemy as sa
# revision identifiers, used by Alembic.
revision: str = '0c82944705e9'
down_revision: Union[str, None] = '09c17c0f0e9e'
branch_labels: Union[str, Sequence[str], None] = None
depends_on: Union[str, Sequence[str], None] = None
def upgrade() -> None:
# ### commands auto generated by Alembic - please adjust! ###
op.add_column('activities', sa.Column('is_estimated_power', sa.Boolean(), nullable=True))
op.drop_column('activities', 'avg_left_pedal_smoothness')
# ### end Alembic commands ###
def downgrade() -> None:
# ### commands auto generated by Alembic - please adjust! ###
op.add_column('activities', sa.Column('avg_left_pedal_smoothness', sa.DOUBLE_PRECISION(precision=53), autoincrement=False, nullable=True))
op.drop_column('activities', 'is_estimated_power')
# ### end Alembic commands ###

View File

@@ -0,0 +1,30 @@
"""Add last_segment_scan_timestamp_v3
Revision ID: 1136125782ec
Revises: 87cc6ed8df63
Create Date: 2026-01-12 18:52:58.854314
"""
from typing import Sequence, Union
from alembic import op
import sqlalchemy as sa
# revision identifiers, used by Alembic.
revision: str = '1136125782ec'
down_revision: Union[str, None] = '87cc6ed8df63'
branch_labels: Union[str, Sequence[str], None] = None
depends_on: Union[str, Sequence[str], None] = None
def upgrade() -> None:
# ### commands auto generated by Alembic - please adjust! ###
pass
# ### end Alembic commands ###
def downgrade() -> None:
# ### commands auto generated by Alembic - please adjust! ###
pass
# ### end Alembic commands ###

View File

@@ -0,0 +1,24 @@
"""add streams_json to activity
Revision ID: 52a16d820129
Revises: cc3b223773cb
Create Date: 2026-01-13 09:40:00.000000
"""
from alembic import op
import sqlalchemy as sa
from sqlalchemy.dialects import postgresql
# revision identifiers, used by Alembic.
revision = '52a16d820129'
down_revision = 'e9b8841a1234'
branch_labels = None
depends_on = None
def upgrade() -> None:
op.add_column('activities', sa.Column('streams_json', sa.JSON(), nullable=True))
def downgrade() -> None:
op.drop_column('activities', 'streams_json')

View File

@@ -0,0 +1,30 @@
"""Add last_segment_scan_timestamp_v2
Revision ID: 87cc6ed8df63
Revises: 8cc7963c8db0
Create Date: 2026-01-12 18:52:47.577657
"""
from typing import Sequence, Union
from alembic import op
import sqlalchemy as sa
# revision identifiers, used by Alembic.
revision: str = '87cc6ed8df63'
down_revision: Union[str, None] = '8cc7963c8db0'
branch_labels: Union[str, Sequence[str], None] = None
depends_on: Union[str, Sequence[str], None] = None
def upgrade() -> None:
# ### commands auto generated by Alembic - please adjust! ###
pass
# ### end Alembic commands ###
def downgrade() -> None:
# ### commands auto generated by Alembic - please adjust! ###
pass
# ### end Alembic commands ###

View File

@@ -0,0 +1,30 @@
"""Add last_segment_scan_timestamp
Revision ID: 8cc7963c8db0
Revises: 0c82944705e9
Create Date: 2026-01-12 18:52:29.081798
"""
from typing import Sequence, Union
from alembic import op
import sqlalchemy as sa
# revision identifiers, used by Alembic.
revision: str = '8cc7963c8db0'
down_revision: Union[str, None] = '0c82944705e9'
branch_labels: Union[str, Sequence[str], None] = None
depends_on: Union[str, Sequence[str], None] = None
def upgrade() -> None:
# ### commands auto generated by Alembic - please adjust! ###
pass
# ### end Alembic commands ###
def downgrade() -> None:
# ### commands auto generated by Alembic - please adjust! ###
pass
# ### end Alembic commands ###

View File

@@ -0,0 +1,46 @@
"""Add avg_temperature_to_activity
Revision ID: b43006af329e
Revises: a9c00e495f5e
Create Date: 2026-01-11 16:32:06.147407
"""
from typing import Sequence, Union
from alembic import op
import sqlalchemy as sa
from sqlalchemy.dialects import postgresql
# revision identifiers, used by Alembic.
revision: str = 'b43006af329e'
down_revision: Union[str, None] = 'a9c00e495f5e'
branch_labels: Union[str, Sequence[str], None] = None
depends_on: Union[str, Sequence[str], None] = None
def upgrade() -> None:
# ### commands auto generated by Alembic - please adjust! ###
op.add_column('activities', sa.Column('avg_temperature', sa.Float(), nullable=True))
op.alter_column('bike_setups', 'purchase_date',
existing_type=postgresql.TIMESTAMP(timezone=True),
type_=sa.DateTime(),
existing_nullable=True)
op.alter_column('bike_setups', 'retirement_date',
existing_type=postgresql.TIMESTAMP(timezone=True),
type_=sa.DateTime(),
existing_nullable=True)
# ### end Alembic commands ###
def downgrade() -> None:
# ### commands auto generated by Alembic - please adjust! ###
op.alter_column('bike_setups', 'retirement_date',
existing_type=sa.DateTime(),
type_=postgresql.TIMESTAMP(timezone=True),
existing_nullable=True)
op.alter_column('bike_setups', 'purchase_date',
existing_type=sa.DateTime(),
type_=postgresql.TIMESTAMP(timezone=True),
existing_nullable=True)
op.drop_column('activities', 'avg_temperature')
# ### end Alembic commands ###

View File

@@ -0,0 +1,30 @@
"""Add max_power to SegmentEffort
Revision ID: cc3b223773cb
Revises: dbb13b0ba015
Create Date: 2026-01-12 20:13:23.975345
"""
from typing import Sequence, Union
from alembic import op
import sqlalchemy as sa
# revision identifiers, used by Alembic.
revision: str = 'cc3b223773cb'
down_revision: Union[str, None] = 'dbb13b0ba015'
branch_labels: Union[str, Sequence[str], None] = None
depends_on: Union[str, Sequence[str], None] = None
def upgrade() -> None:
# ### commands auto generated by Alembic - please adjust! ###
op.add_column('segment_efforts', sa.Column('max_power', sa.Integer(), nullable=True))
# ### end Alembic commands ###
def downgrade() -> None:
# ### commands auto generated by Alembic - please adjust! ###
op.drop_column('segment_efforts', 'max_power')
# ### end Alembic commands ###

View File

@@ -0,0 +1,30 @@
"""Add last_segment_scan_timestamp
Revision ID: dbb13b0ba015
Revises: 1136125782ec
Create Date: 2026-01-12 19:46:33.893542
"""
from typing import Sequence, Union
from alembic import op
import sqlalchemy as sa
# revision identifiers, used by Alembic.
revision: str = 'dbb13b0ba015'
down_revision: Union[str, None] = '1136125782ec'
branch_labels: Union[str, Sequence[str], None] = None
depends_on: Union[str, Sequence[str], None] = None
def upgrade() -> None:
# ### commands auto generated by Alembic - please adjust! ###
op.add_column('activities', sa.Column('last_segment_scan_timestamp', sa.DateTime(), nullable=True))
# ### end Alembic commands ###
def downgrade() -> None:
# ### commands auto generated by Alembic - please adjust! ###
op.drop_column('activities', 'last_segment_scan_timestamp')
# ### end Alembic commands ###

View File

@@ -0,0 +1,25 @@
"""add_segment_effort_metrics
Revision ID: e9b8841a1234
Revises: 1136125782ec
Create Date: 2026-01-13 14:45:00.000000
"""
from alembic import op
import sqlalchemy as sa
# revision identifiers, used by Alembic.
revision = 'e9b8841a1234'
down_revision = 'cc3b223773cb'
branch_labels = None
depends_on = None
def upgrade():
op.add_column('segment_efforts', sa.Column('avg_speed', sa.Float(), nullable=True))
op.add_column('segment_efforts', sa.Column('avg_cadence', sa.Integer(), nullable=True))
op.add_column('segment_efforts', sa.Column('avg_respiration_rate', sa.Float(), nullable=True))
def downgrade():
op.drop_column('segment_efforts', 'avg_respiration_rate')
op.drop_column('segment_efforts', 'avg_cadence')
op.drop_column('segment_efforts', 'avg_speed')