"""Add provider_credentials table for AI provider API key management. Revision ID: d1e2f3a4b5c6 Revises: c1d2e3f4a5b6 Create Date: 2026-05-21 12:00:00.000000 """ from __future__ import annotations import sqlalchemy as sa from alembic import op revision = "d1e2f3a4b5c6" down_revision = "f1b2c3d4e5a6" branch_labels = None depends_on = None def upgrade() -> None: op.create_table( "provider_credentials", sa.Column("id", sa.UUID(), nullable=False), sa.Column("organization_id", sa.UUID(), nullable=False), sa.Column("provider", sa.String(), nullable=False), sa.Column("account_key", sa.String(), nullable=False), sa.Column("display_name", sa.String(), nullable=False, server_default=""), sa.Column("api_key", sa.String(), nullable=True), sa.Column("api_key_last_four", sa.String(), nullable=True), sa.Column("base_url", sa.String(), nullable=True), sa.Column("active", sa.Boolean(), nullable=False, server_default="true"), sa.Column("created_at", sa.DateTime(), nullable=False), sa.Column("updated_at", sa.DateTime(), nullable=False), sa.ForeignKeyConstraint(["organization_id"], ["organizations.id"]), sa.PrimaryKeyConstraint("id"), sa.UniqueConstraint( "organization_id", "provider", "account_key", name="uq_provider_credentials_org_provider_key", ), ) op.create_index("ix_provider_credentials_org_id", "provider_credentials", ["organization_id"]) op.create_index("ix_provider_credentials_provider", "provider_credentials", ["provider"]) op.create_index("ix_provider_credentials_active", "provider_credentials", ["active"]) def downgrade() -> None: op.drop_index("ix_provider_credentials_active", table_name="provider_credentials") op.drop_index("ix_provider_credentials_provider", table_name="provider_credentials") op.drop_index("ix_provider_credentials_org_id", table_name="provider_credentials") op.drop_table("provider_credentials")