"""Add repos.manage to system editor role (GitHub import + user-app mirror).

Revision ID: 071
Revises: 070
"""

from typing import Sequence, Union

from alembic import op

revision: str = "071"
down_revision: Union[str, None] = "070"
branch_labels: Union[str, Sequence[str], None] = None
depends_on: Union[str, Sequence[str], None] = None


def upgrade() -> None:
    op.execute(
        """
        UPDATE roles
        SET permissions = array_append(permissions, 'repos.manage')
        WHERE workspace_id IS NULL
          AND LOWER(name) = 'editor'
          AND is_system IS TRUE
          AND NOT ('repos.manage' = ANY(permissions));
        """
    )


def downgrade() -> None:
    op.execute(
        """
        UPDATE roles
        SET permissions = array_remove(permissions, 'repos.manage')
        WHERE workspace_id IS NULL
          AND LOWER(name) = 'editor'
          AND is_system IS TRUE;
        """
    )
