"""add station master

Revision ID: ba17d284be21
Revises: f8f08f7751dc
Create Date: 2026-06-20 13:30:22.584857

"""
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 = 'ba17d284be21'
down_revision: Union[str, None] = 'f8f08f7751dc'
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('station_master',
    sa.Column('station_id', sa.UUID(), nullable=False),
    sa.Column('station_code', sa.String(length=50), nullable=False),
    sa.Column('station_name', sa.String(length=255), nullable=False),
    sa.Column('station_description', sa.Text(), nullable=True),
    sa.Column('operation_id', sa.UUID(), nullable=True),
    sa.Column('primary_operator_id', sa.UUID(), nullable=True),
    sa.Column('sequence_no', sa.Integer(), nullable=True),
    sa.Column('requires_qa', sa.Boolean(), nullable=False),
    sa.Column('is_rework_station', sa.Boolean(), nullable=False),
    sa.Column('backflush_enabled', sa.Boolean(), nullable=False),
    sa.Column('standard_cycle_time_min', sa.Integer(), nullable=True),
    sa.Column('is_active', sa.Boolean(), nullable=False),
    sa.Column('custom_fields', postgresql.JSONB(astext_type=sa.Text()), nullable=True),
    sa.Column('created_at', sa.DateTime(timezone=True), nullable=True),
    sa.PrimaryKeyConstraint('station_id'),
    sa.UniqueConstraint('station_code')
    )
    op.alter_column('material_type_master', 'created_at',
               existing_type=postgresql.TIMESTAMP(timezone=True),
               nullable=False)
    op.alter_column('procurement_source_master', 'created_at',
               existing_type=postgresql.TIMESTAMP(timezone=True),
               nullable=False)
    op.alter_column('rm_inventory', 'last_updated',
               existing_type=postgresql.TIMESTAMP(timezone=True),
               nullable=False)
    op.alter_column('rm_master', 'created_at',
               existing_type=postgresql.TIMESTAMP(timezone=True),
               nullable=False)
    op.alter_column('rm_master', 'updated_at',
               existing_type=postgresql.TIMESTAMP(timezone=True),
               nullable=False)
    # ### end Alembic commands ###


def downgrade() -> None:
    # ### commands auto generated by Alembic - please adjust! ###
    op.alter_column('rm_master', 'updated_at',
               existing_type=postgresql.TIMESTAMP(timezone=True),
               nullable=True)
    op.alter_column('rm_master', 'created_at',
               existing_type=postgresql.TIMESTAMP(timezone=True),
               nullable=True)
    op.alter_column('rm_inventory', 'last_updated',
               existing_type=postgresql.TIMESTAMP(timezone=True),
               nullable=True)
    op.alter_column('procurement_source_master', 'created_at',
               existing_type=postgresql.TIMESTAMP(timezone=True),
               nullable=True)
    op.alter_column('material_type_master', 'created_at',
               existing_type=postgresql.TIMESTAMP(timezone=True),
               nullable=True)
    op.drop_table('station_master')
    # ### end Alembic commands ###
