"""remove user global role Revision ID: 20260529_01 Revises: 20260528_01 Create Date: 2026-05-29 10:15:00.000000 """ from typing import Sequence, Union from alembic import op import sqlalchemy as sa revision: str = "20260529_01" down_revision: Union[str, None] = "20260528_01" branch_labels: Union[str, Sequence[str], None] = None depends_on: Union[str, Sequence[str], None] = None def upgrade() -> None: conn = op.get_bind() inspector = sa.inspect(conn) columns = {column["name"] for column in inspector.get_columns("users")} if "is_admin" not in columns: op.add_column("users", sa.Column("is_admin", sa.Boolean(), nullable=False, server_default=sa.false())) if "role" in columns: op.execute("UPDATE users SET is_admin = true WHERE role::text = 'ADMIN'") op.drop_column("users", "role") op.execute("DROP TYPE IF EXISTS user_role") def downgrade() -> None: op.execute("CREATE TYPE user_role AS ENUM ('ADMIN', 'PM', 'CRA', 'PV', 'QA', 'CTA')") op.add_column( "users", sa.Column("role", sa.Enum("ADMIN", "PM", "CRA", "PV", "QA", "CTA", name="user_role"), nullable=True), ) op.execute("UPDATE users SET role = CASE WHEN is_admin THEN 'ADMIN'::user_role ELSE 'PV'::user_role END") op.alter_column("users", "role", nullable=False) op.drop_column("users", "is_admin")