"""Add granular flight states and timestamps Revision ID: 8adefaee847c Revises: 004_user_aircraft Create Date: 2026-03-24 09:09:00.944815 """ from alembic import op import sqlalchemy as sa # revision identifiers, used by Alembic. revision = '005_flight_states' down_revision = '004_user_aircraft' branch_labels = None depends_on = None def upgrade() -> None: # Add GROUND and LOCAL to local_flights status enum op.execute("ALTER TABLE local_flights MODIFY COLUMN status ENUM('BOOKED_OUT','GROUND','DEPARTED','LOCAL','CIRCUIT','LANDED','CANCELLED')") # Add timestamp columns to local_flights op.add_column('local_flights', sa.Column('contact_dt', sa.DateTime(), nullable=True)) op.add_column('local_flights', sa.Column('takeoff_dt', sa.DateTime(), nullable=True)) # Add GROUND and ARRIVED to arrivals status enum op.execute("ALTER TABLE arrivals MODIFY COLUMN status ENUM('BOOKED_IN','LANDED','GROUND','ARRIVED','CANCELLED')") # Add timestamp column to arrivals op.add_column('arrivals', sa.Column('arrived_dt', sa.DateTime(), nullable=True)) # Add GROUND and LOCAL to departures status enum op.execute("ALTER TABLE departures MODIFY COLUMN status ENUM('BOOKED_OUT','GROUND','DEPARTED','LOCAL','CANCELLED')") # Add timestamp columns to departures op.add_column('departures', sa.Column('contact_dt', sa.DateTime(), nullable=True)) op.add_column('departures', sa.Column('takeoff_dt', sa.DateTime(), nullable=True)) def downgrade() -> None: # Remove timestamp columns from departures op.drop_column('departures', 'takeoff_dt') op.drop_column('departures', 'contact_dt') # Remove GROUND and LOCAL from departures status enum op.execute("ALTER TABLE departures MODIFY COLUMN status ENUM('BOOKED_OUT','DEPARTED','CANCELLED')") # Remove timestamp column from arrivals op.drop_column('arrivals', 'arrived_dt') # Remove GROUND and ARRIVED from arrivals status enum op.execute("ALTER TABLE arrivals MODIFY COLUMN status ENUM('BOOKED_IN','LANDED','CANCELLED')") # Remove timestamp columns from local_flights op.drop_column('local_flights', 'takeoff_dt') op.drop_column('local_flights', 'contact_dt') # Remove GROUND and LOCAL from local_flights status enum op.execute("ALTER TABLE local_flights MODIFY COLUMN status ENUM('BOOKED_OUT','DEPARTED','LANDED','CANCELLED')")