"""per-project member role Lets someone be Project Admin on one job and a normal Project User on another. Empty string means "inherit the account's own role" (users.role), which is exactly how every existing membership behaved, so this is a no-op for current data. Revision ID: d15b8c4ef207 Revises: c93f2b1d7e04 Create Date: 2026-08-03 17:58:22.401118 """ from alembic import op import sqlalchemy as sa # revision identifiers, used by Alembic. revision = 'd15b8c4ef207' down_revision = 'c93f2b1d7e04' branch_labels = None depends_on = None def upgrade() -> None: op.add_column('project_members', sa.Column('role', sa.String(length=20), nullable=False, server_default='')) def downgrade() -> None: op.drop_column('project_members', 'role')