"""Add ACTIVATED status to PPR, PENDING status to departures, arrival_id FK on departures Revision ID: 007_ppr_activated_status Revises: 006_movements Create Date: 2026-04-03 12:00:00.000000 """ from alembic import op import sqlalchemy as sa revision = '007_ppr_activated_status' down_revision = '006_movements' branch_labels = None depends_on = None def upgrade() -> None: # Add ACTIVATED to PPR status enum op.execute( "ALTER TABLE submitted MODIFY COLUMN status " "ENUM('NEW','CONFIRMED','CANCELED','LANDED','DELETED','DEPARTED','ACTIVATED') NOT NULL" ) # Add PENDING to departures status enum op.execute( "ALTER TABLE departures MODIFY COLUMN status " "ENUM('BOOKED_OUT','GROUND','DEPARTED','LOCAL','CANCELLED','PENDING') NOT NULL" ) # Add arrival_id FK column to departures (nullable - only set for PPR-activated departures) op.add_column('departures', sa.Column('arrival_id', sa.BigInteger(), nullable=True)) op.create_foreign_key( 'fk_departures_arrival_id', 'departures', 'arrivals', ['arrival_id'], ['id'], ondelete='SET NULL' ) op.create_index('idx_departures_arrival_id', 'departures', ['arrival_id']) def downgrade() -> None: op.drop_index('idx_departures_arrival_id', table_name='departures') op.drop_constraint('fk_departures_arrival_id', 'departures', type_='foreignkey') op.drop_column('departures', 'arrival_id') op.execute( "UPDATE departures SET status = 'CANCELLED' WHERE status = 'PENDING'" ) op.execute( "ALTER TABLE departures MODIFY COLUMN status " "ENUM('BOOKED_OUT','GROUND','DEPARTED','LOCAL','CANCELLED') NOT NULL" ) op.execute( "UPDATE submitted SET status = 'CONFIRMED' WHERE status = 'ACTIVATED'" ) op.execute( "ALTER TABLE submitted MODIFY COLUMN status " "ENUM('NEW','CONFIRMED','CANCELED','LANDED','DELETED','DEPARTED') NOT NULL" )