"""Add durable Cloud governance policies.""" from __future__ import annotations from alembic import op import sqlalchemy as sa revision = "0004_cloud_governance" down_revision = "0003_cloud_user_authentication" branch_labels = None depends_on = None def upgrade() -> None: inspector = sa.inspect(op.get_bind()) tables = set(inspector.get_table_names()) if "cloud_user_submission_policies" not in tables: op.create_table( "cloud_user_submission_policies", sa.Column( "user_id", sa.String(), sa.ForeignKey("cloud_users.id", ondelete="CASCADE"), primary_key=True, ), sa.Column("revision", sa.Integer(), nullable=False), sa.Column("submission_enabled", sa.Integer(), nullable=False), sa.Column("allowed_host_ids_json", sa.Text(), nullable=True), sa.Column("allowed_device_targets_json", sa.Text(), nullable=True), sa.Column("updated_at", sa.String(), nullable=False), ) if "cloud_host_governance_policies" not in tables: op.create_table( "cloud_host_governance_policies", sa.Column( "host_id", sa.String(), sa.ForeignKey("host_registrations.host_id", ondelete="CASCADE"), primary_key=True, ), sa.Column("revision", sa.Integer(), nullable=False), sa.Column("self_submission_enabled", sa.Integer(), nullable=False), sa.Column("max_active_tasks", sa.Integer(), nullable=True), sa.Column("daily_token_budget", sa.Integer(), nullable=True), sa.Column("updated_at", sa.String(), nullable=False), ) def downgrade() -> None: inspector = sa.inspect(op.get_bind()) tables = set(inspector.get_table_names()) if "cloud_host_governance_policies" in tables: op.drop_table("cloud_host_governance_policies") if "cloud_user_submission_policies" in tables: op.drop_table("cloud_user_submission_policies")