"""add_wo_status_priority_to_maintenance_record

Revision ID: 7eff8cbfd91e
Revises: b4b21eacdc45
Create Date: 2026-07-17 14:41:21.446967

"""
from typing import Sequence, Union

from alembic import op
import sqlalchemy as sa


# revision identifiers, used by Alembic.
"""add_wo_status_priority_to_maintenance_record

Revision ID: 7eff8cbfd91e
Revises: b4b21eacdc45
Create Date: 2026-07-17 14:41:21.446967

"""
from typing import Sequence, Union

from alembic import op
import sqlalchemy as sa


# revision identifiers, used by Alembic.
revision: str = '7eff8cbfd91e'
down_revision: Union[str, None] = 'b4b21eacdc45'
branch_labels: Union[str, Sequence[str], None] = None
depends_on: Union[str, Sequence[str], None] = None


def upgrade() -> None:
    # Add nullable=True first, set defaults, then make NOT NULL
    op.add_column('maintenance_record', sa.Column('wo_number', sa.String(length=30), nullable=True))
    op.add_column('maintenance_record', sa.Column('status', sa.String(length=20), nullable=True))
    op.add_column('maintenance_record', sa.Column('priority', sa.String(length=20), nullable=True))
    op.add_column('maintenance_record', sa.Column('assigned_technician', sa.String(length=150), nullable=True))
    op.add_column('maintenance_record', sa.Column('estimated_time', sa.String(length=50), nullable=True))

    # Backfill defaults for existing rows
    op.execute("UPDATE maintenance_record SET status = 'COMPLETED' WHERE status IS NULL")
    op.execute("UPDATE maintenance_record SET priority = 'MEDIUM' WHERE priority IS NULL")

    # Now add NOT NULL constraint
    op.alter_column('maintenance_record', 'status', nullable=False)
    op.alter_column('maintenance_record', 'priority', nullable=False)

    op.create_index(op.f('ix_maintenance_record_wo_number'), 'maintenance_record', ['wo_number'], unique=False)


def downgrade() -> None:
    # ### commands auto generated by Alembic - please adjust! ###
    op.drop_index(op.f('ix_maintenance_record_wo_number'), table_name='maintenance_record')
    op.drop_column('maintenance_record', 'estimated_time')
    op.drop_column('maintenance_record', 'assigned_technician')
    op.drop_column('maintenance_record', 'priority')
    op.drop_column('maintenance_record', 'status')
    op.drop_column('maintenance_record', 'wo_number')
    # ### end Alembic commands ###
