"""Owner-approved billing delegation for agent connections.

Revision ID: 176
Revises: 175
"""
import sqlalchemy as sa
from alembic import op

revision = "176"
down_revision = "175"
branch_labels = None
depends_on = None


def upgrade():
    op.create_table(
        "workspace_billing_delegations",
        sa.Column("id", sa.Uuid(), primary_key=True),
        sa.Column("workspace_id", sa.Uuid(), sa.ForeignKey("workspaces.id"), nullable=False),
        sa.Column("member_id", sa.Uuid(), sa.ForeignKey("users.id"), nullable=False),
        sa.Column("status", sa.String(16), nullable=False),
        sa.Column("requested_at", sa.DateTime(timezone=True), nullable=False),
        sa.Column("resolved_at", sa.DateTime(timezone=True)),
        sa.Column("resolved_by", sa.Uuid(), sa.ForeignKey("users.id")),
        sa.UniqueConstraint("workspace_id", "member_id", name="uq_billing_delegation_member"),
        sa.CheckConstraint(
            "status IN ('pending', 'approved', 'declined', 'revoked')",
            name="ck_billing_delegation_status",
        ),
    )
    op.create_index(
        "ix_workspace_billing_delegations_workspace_id",
        "workspace_billing_delegations",
        ["workspace_id"],
    )
    op.create_index(
        "ix_workspace_billing_delegations_member_id",
        "workspace_billing_delegations",
        ["member_id"],
    )


def downgrade():
    op.drop_table("workspace_billing_delegations")
