"""Free plan max_projects + workspace skip_plan_quota_limits for internal/QA.

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

import sqlalchemy as sa
from alembic import op

revision: str = "013"
down_revision: Union[str, None] = "012"
branch_labels: Union[str, Sequence[str], None] = None
depends_on: Union[str, Sequence[str], None] = None


def upgrade() -> None:
    op.add_column(
        "workspaces",
        sa.Column(
            "skip_plan_quota_limits",
            sa.Boolean(),
            nullable=False,
            server_default=sa.text("false"),
        ),
    )
    op.execute(
        """
        UPDATE subscription_plans
        SET limits = COALESCE(limits, '{}'::jsonb) || '{"max_projects": 1}'::jsonb
        WHERE LOWER(slug) = 'free';
        """
    )


def downgrade() -> None:
    op.drop_column("workspaces", "skip_plan_quota_limits")
    op.execute(
        """
        UPDATE subscription_plans
        SET limits = limits - 'max_projects'
        WHERE LOWER(slug) = 'free';
        """
    )
