"""Add category to ChassisBomSnapshot

Revision ID: e76e6e1024a4
Revises: 0a22926e21fb
Create Date: 2026-09-21 16:04:47.340050

"""
from typing import Sequence, Union

from alembic import op
import sqlalchemy as sa


# revision identifiers, used by Alembic.
revision: str = 'e76e6e1024a4'
down_revision: Union[str, None] = '0a22926e21fb'
branch_labels: Union[str, Sequence[str], None] = None
depends_on: Union[str, Sequence[str], None] = None


def upgrade() -> None:
    conn = op.get_bind()
    try:
        with conn.begin_nested():
            col_exists = conn.execute(sa.text(
                "SELECT 1 FROM information_schema.columns "
                "WHERE table_name='chassis_bom_snapshot' AND column_name='category'"
            )).fetchone()
            if not col_exists:
                op.add_column('chassis_bom_snapshot', sa.Column('category', sa.String(length=50), server_default='Base BOM', nullable=False))
    except Exception as e:
        print(f"Notice: skipped e76e6e1024a4 add_column: {e}")


def downgrade() -> None:
    conn = op.get_bind()
    try:
        col_exists = conn.execute(sa.text(
            "SELECT 1 FROM information_schema.columns "
            "WHERE table_name='chassis_bom_snapshot' AND column_name='category'"
        )).fetchone()
        if col_exists:
            op.drop_column('chassis_bom_snapshot', 'category')
    except Exception as e:
        print(f"Notice: skipped e76e6e1024a4 drop_column: {e}")

