added activity view
This commit is contained in:
@@ -0,0 +1,46 @@
|
||||
"""create_jobs_table
|
||||
|
||||
Revision ID: 1e157f880117
|
||||
Revises: bd21a0528865
|
||||
Create Date: 2026-01-03 18:45:18.109625
|
||||
|
||||
"""
|
||||
from typing import Sequence, Union
|
||||
|
||||
from alembic import op
|
||||
import sqlalchemy as sa
|
||||
|
||||
|
||||
# revision identifiers, used by Alembic.
|
||||
revision: str = '1e157f880117'
|
||||
down_revision: Union[str, None] = 'bd21a0528865'
|
||||
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.create_table('jobs',
|
||||
sa.Column('id', sa.String(), nullable=False),
|
||||
sa.Column('operation', sa.String(), nullable=False),
|
||||
sa.Column('status', sa.String(), nullable=False),
|
||||
sa.Column('start_time', sa.DateTime(timezone=True), nullable=False),
|
||||
sa.Column('end_time', sa.DateTime(timezone=True), nullable=True),
|
||||
sa.Column('progress', sa.Integer(), nullable=True),
|
||||
sa.Column('message', sa.Text(), nullable=True),
|
||||
sa.Column('result', sa.JSON(), nullable=True),
|
||||
sa.Column('cancel_requested', sa.Boolean(), nullable=True),
|
||||
sa.Column('paused', sa.Boolean(), nullable=True),
|
||||
sa.Column('created_at', sa.DateTime(timezone=True), server_default=sa.text('now()'), nullable=True),
|
||||
sa.Column('updated_at', sa.DateTime(timezone=True), nullable=True),
|
||||
sa.PrimaryKeyConstraint('id')
|
||||
)
|
||||
op.create_index(op.f('ix_jobs_id'), 'jobs', ['id'], unique=False)
|
||||
# ### end Alembic commands ###
|
||||
|
||||
|
||||
def downgrade() -> None:
|
||||
# ### commands auto generated by Alembic - please adjust! ###
|
||||
op.drop_index(op.f('ix_jobs_id'), table_name='jobs')
|
||||
op.drop_table('jobs')
|
||||
# ### end Alembic commands ###
|
||||
@@ -0,0 +1,32 @@
|
||||
"""add bike setup to activity
|
||||
|
||||
Revision ID: 73e349ef1d88
|
||||
Revises: 95af0e911216
|
||||
Create Date: 2026-01-07 13:47:24.670293
|
||||
|
||||
"""
|
||||
from typing import Sequence, Union
|
||||
|
||||
from alembic import op
|
||||
import sqlalchemy as sa
|
||||
|
||||
|
||||
# revision identifiers, used by Alembic.
|
||||
revision: str = '73e349ef1d88'
|
||||
down_revision: Union[str, None] = '95af0e911216'
|
||||
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('bike_setup_id', sa.Integer(), nullable=True))
|
||||
op.create_foreign_key(None, 'activities', 'bike_setups', ['bike_setup_id'], ['id'])
|
||||
# ### end Alembic commands ###
|
||||
|
||||
|
||||
def downgrade() -> None:
|
||||
# ### commands auto generated by Alembic - please adjust! ###
|
||||
op.drop_constraint(None, 'activities', type_='foreignkey')
|
||||
op.drop_column('activities', 'bike_setup_id')
|
||||
# ### end Alembic commands ###
|
||||
@@ -0,0 +1,53 @@
|
||||
"""Add state tables
|
||||
|
||||
Revision ID: 85c60ed462bf
|
||||
Revises: b5a6d7ef97a5
|
||||
Create Date: 2026-01-01 17:01:04.348349
|
||||
|
||||
"""
|
||||
from typing import Sequence, Union
|
||||
|
||||
from alembic import op
|
||||
import sqlalchemy as sa
|
||||
|
||||
|
||||
# revision identifiers, used by Alembic.
|
||||
revision: str = '85c60ed462bf'
|
||||
down_revision: Union[str, None] = 'b5a6d7ef97a5'
|
||||
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.create_table('garmin_activity_state',
|
||||
sa.Column('garmin_activity_id', sa.String(), nullable=False),
|
||||
sa.Column('activity_name', sa.String(), nullable=True),
|
||||
sa.Column('activity_type', sa.String(), nullable=True),
|
||||
sa.Column('start_time', sa.DateTime(), nullable=True),
|
||||
sa.Column('sync_status', sa.String(), nullable=True),
|
||||
sa.Column('last_seen', sa.DateTime(timezone=True), server_default=sa.text('now()'), nullable=True),
|
||||
sa.PrimaryKeyConstraint('garmin_activity_id')
|
||||
)
|
||||
op.create_index(op.f('ix_garmin_activity_state_garmin_activity_id'), 'garmin_activity_state', ['garmin_activity_id'], unique=False)
|
||||
op.create_table('health_sync_state',
|
||||
sa.Column('id', sa.Integer(), nullable=False),
|
||||
sa.Column('date', sa.Date(), nullable=False),
|
||||
sa.Column('metric_type', sa.String(), nullable=False),
|
||||
sa.Column('source', sa.String(), nullable=False),
|
||||
sa.Column('sync_status', sa.String(), nullable=True),
|
||||
sa.Column('last_seen', sa.DateTime(timezone=True), server_default=sa.text('now()'), nullable=True),
|
||||
sa.PrimaryKeyConstraint('id'),
|
||||
sa.UniqueConstraint('date', 'metric_type', 'source', name='uq_health_state')
|
||||
)
|
||||
op.create_index(op.f('ix_health_sync_state_id'), 'health_sync_state', ['id'], unique=False)
|
||||
# ### end Alembic commands ###
|
||||
|
||||
|
||||
def downgrade() -> None:
|
||||
# ### commands auto generated by Alembic - please adjust! ###
|
||||
op.drop_index(op.f('ix_health_sync_state_id'), table_name='health_sync_state')
|
||||
op.drop_table('health_sync_state')
|
||||
op.drop_index(op.f('ix_garmin_activity_state_garmin_activity_id'), table_name='garmin_activity_state')
|
||||
op.drop_table('garmin_activity_state')
|
||||
# ### end Alembic commands ###
|
||||
@@ -0,0 +1,41 @@
|
||||
"""add bike setups table
|
||||
|
||||
Revision ID: 95af0e911216
|
||||
Revises: 1e157f880117
|
||||
Create Date: 2026-01-07 11:46:19.649500
|
||||
|
||||
"""
|
||||
from typing import Sequence, Union
|
||||
|
||||
from alembic import op
|
||||
import sqlalchemy as sa
|
||||
|
||||
|
||||
# revision identifiers, used by Alembic.
|
||||
revision: str = '95af0e911216'
|
||||
down_revision: Union[str, None] = '1e157f880117'
|
||||
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.create_table('bike_setups',
|
||||
sa.Column('id', sa.Integer(), nullable=False),
|
||||
sa.Column('frame', sa.String(), nullable=False),
|
||||
sa.Column('chainring', sa.Integer(), nullable=False),
|
||||
sa.Column('rear_cog', sa.Integer(), nullable=False),
|
||||
sa.Column('name', sa.String(), nullable=True),
|
||||
sa.Column('created_at', sa.DateTime(timezone=True), server_default=sa.text('now()'), nullable=True),
|
||||
sa.Column('updated_at', sa.DateTime(timezone=True), nullable=True),
|
||||
sa.PrimaryKeyConstraint('id')
|
||||
)
|
||||
op.create_index(op.f('ix_bike_setups_id'), 'bike_setups', ['id'], unique=False)
|
||||
# ### end Alembic commands ###
|
||||
|
||||
|
||||
def downgrade() -> None:
|
||||
# ### commands auto generated by Alembic - please adjust! ###
|
||||
op.drop_index(op.f('ix_bike_setups_id'), table_name='bike_setups')
|
||||
op.drop_table('bike_setups')
|
||||
# ### end Alembic commands ###
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,64 @@
|
||||
"""expand_activity_schema_metrics
|
||||
|
||||
Revision ID: bd21a0528865
|
||||
Revises: 85c60ed462bf
|
||||
Create Date: 2026-01-01 22:53:14.358635
|
||||
|
||||
"""
|
||||
from typing import Sequence, Union
|
||||
|
||||
from alembic import op
|
||||
import sqlalchemy as sa
|
||||
|
||||
|
||||
# revision identifiers, used by Alembic.
|
||||
revision: str = 'bd21a0528865'
|
||||
down_revision: Union[str, None] = '85c60ed462bf'
|
||||
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('distance', sa.Float(), nullable=True))
|
||||
op.add_column('activities', sa.Column('calories', sa.Float(), nullable=True))
|
||||
op.add_column('activities', sa.Column('avg_hr', sa.Integer(), nullable=True))
|
||||
op.add_column('activities', sa.Column('max_hr', sa.Integer(), nullable=True))
|
||||
op.add_column('activities', sa.Column('avg_speed', sa.Float(), nullable=True))
|
||||
op.add_column('activities', sa.Column('max_speed', sa.Float(), nullable=True))
|
||||
op.add_column('activities', sa.Column('elevation_gain', sa.Float(), nullable=True))
|
||||
op.add_column('activities', sa.Column('elevation_loss', sa.Float(), nullable=True))
|
||||
op.add_column('activities', sa.Column('avg_cadence', sa.Integer(), nullable=True))
|
||||
op.add_column('activities', sa.Column('max_cadence', sa.Integer(), nullable=True))
|
||||
op.add_column('activities', sa.Column('steps', sa.Integer(), nullable=True))
|
||||
op.add_column('activities', sa.Column('aerobic_te', sa.Float(), nullable=True))
|
||||
op.add_column('activities', sa.Column('anaerobic_te', sa.Float(), nullable=True))
|
||||
op.add_column('activities', sa.Column('avg_power', sa.Integer(), nullable=True))
|
||||
op.add_column('activities', sa.Column('max_power', sa.Integer(), nullable=True))
|
||||
op.add_column('activities', sa.Column('norm_power', sa.Integer(), nullable=True))
|
||||
op.add_column('activities', sa.Column('tss', sa.Float(), nullable=True))
|
||||
op.add_column('activities', sa.Column('vo2_max', sa.Float(), nullable=True))
|
||||
# ### end Alembic commands ###
|
||||
|
||||
|
||||
def downgrade() -> None:
|
||||
# ### commands auto generated by Alembic - please adjust! ###
|
||||
op.drop_column('activities', 'vo2_max')
|
||||
op.drop_column('activities', 'tss')
|
||||
op.drop_column('activities', 'norm_power')
|
||||
op.drop_column('activities', 'max_power')
|
||||
op.drop_column('activities', 'avg_power')
|
||||
op.drop_column('activities', 'anaerobic_te')
|
||||
op.drop_column('activities', 'aerobic_te')
|
||||
op.drop_column('activities', 'steps')
|
||||
op.drop_column('activities', 'max_cadence')
|
||||
op.drop_column('activities', 'avg_cadence')
|
||||
op.drop_column('activities', 'elevation_loss')
|
||||
op.drop_column('activities', 'elevation_gain')
|
||||
op.drop_column('activities', 'max_speed')
|
||||
op.drop_column('activities', 'avg_speed')
|
||||
op.drop_column('activities', 'max_hr')
|
||||
op.drop_column('activities', 'avg_hr')
|
||||
op.drop_column('activities', 'calories')
|
||||
op.drop_column('activities', 'distance')
|
||||
# ### end Alembic commands ###
|
||||
Reference in New Issue
Block a user