"""add_station_id_station_code_scan_mode_to_chassis_status_log

Revision ID: 5e34218e79a5
Revises: 2a4755289046
Create Date: 2026-07-24 16:17:05.841225

"""
from typing import Sequence, Union

from alembic import op
import sqlalchemy as sa


# revision identifiers, used by Alembic.
revision: str = '5e34218e79a5'
down_revision: Union[str, None] = '2a4755289046'
branch_labels: Union[str, Sequence[str], None] = None
depends_on: Union[str, Sequence[str], None] = None


def upgrade() -> None:
    # Add missing columns to chassis_status_log that were added to the model
    # but never had a corresponding migration created.
    op.add_column('chassis_status_log', sa.Column('station_id', sa.UUID(), nullable=True))
    op.add_column('chassis_status_log', sa.Column('station_code', sa.String(length=50), nullable=True))
    op.add_column('chassis_status_log', sa.Column('scan_mode', sa.String(length=20), nullable=True, server_default='MANUAL_ENTRY'))

    # Extend scan_location from VARCHAR(30) to VARCHAR(150) to match updated model
    op.alter_column(
        'chassis_status_log', 'scan_location',
        existing_type=sa.VARCHAR(length=30),
        type_=sa.String(length=150),
        existing_nullable=True,
    )

    # Add FK from chassis_status_log.station_id -> station_master.station_id
    op.create_foreign_key(
        'fk_chassis_status_log_station_id',
        'chassis_status_log', 'station_master',
        ['station_id'], ['station_id'],
    )


def downgrade() -> None:
    op.drop_constraint('fk_chassis_status_log_station_id', 'chassis_status_log', type_='foreignkey')
    op.alter_column(
        'chassis_status_log', 'scan_location',
        existing_type=sa.String(length=150),
        type_=sa.VARCHAR(length=30),
        existing_nullable=True,
    )
    op.drop_column('chassis_status_log', 'scan_mode')
    op.drop_column('chassis_status_log', 'station_code')
    op.drop_column('chassis_status_log', 'station_id')
