"""convert ticket status enum to varchar for custom workflow statuses

Revision ID: b2c8f1a3d4e5
Revises: 1ec21c9cd542
Create Date: 2026-05-21 08:05:00.000000

"""
from typing import Sequence, Union
from alembic import op
import sqlalchemy as sa


# revision identifiers, used by Alembic.
revision: str = 'b2c8f1a3d4e5'
down_revision: str = '1ec21c9cd542'
branch_labels: Union[str, Sequence[str], None] = None
depends_on: Union[str, Sequence[str], None] = None


def upgrade() -> None:
    # Convert the status column from enum to varchar
    # First alter the column type using USING to cast existing values
    op.execute("""
        ALTER TABLE tickets 
        ALTER COLUMN status TYPE VARCHAR(50) 
        USING status::text
    """)
    
    # Drop the old enum type
    op.execute("DROP TYPE IF EXISTS ticketstatus")


def downgrade() -> None:
    # Recreate the enum type
    ticket_status_enum = sa.Enum(
        'BACKLOG', 'TODO', 'IN_PROGRESS', 'IN_REVIEW', 'DONE',
        name='ticketstatus'
    )
    ticket_status_enum.create(op.get_bind())
    
    # Convert back to enum (this will fail if there are custom status values)
    op.execute("""
        ALTER TABLE tickets 
        ALTER COLUMN status TYPE ticketstatus 
        USING status::ticketstatus
    """)
