"""Add projects.read to owner and admin system roles (list/get projects).

Revision ID: 012
Revises: 011
"""
from typing import Sequence, Union

from alembic import op

revision: str = "012"
down_revision: Union[str, None] = "011"
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, 'projects.read')
        WHERE workspace_id IS NULL
          AND LOWER(name) IN ('owner', 'admin')
          AND NOT ('projects.read' = ANY(permissions));
        """
    )


def downgrade() -> None:
    op.execute(
        """
        UPDATE roles
        SET permissions = array_remove(permissions, 'projects.read')
        WHERE workspace_id IS NULL AND LOWER(name) IN ('owner', 'admin');
        """
    )
