Clawith/backend/alembic/versions/add_agent_credentials.py

46 lines
1.4 KiB
Python

"""Add agent_credentials table for storing encrypted login credentials and cookies.
Revision ID: add_agent_credentials
"""
from alembic import op
revision = "add_agent_credentials"
down_revision = "add_tool_source"
branch_labels = None
depends_on = None
def upgrade() -> None:
"""Create agent_credentials table (idempotent)."""
op.execute("""
CREATE TABLE IF NOT EXISTS agent_credentials (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
agent_id UUID NOT NULL REFERENCES agents(id) ON DELETE CASCADE,
credential_type VARCHAR(20) DEFAULT 'website',
platform VARCHAR(100) NOT NULL,
display_name VARCHAR(200) DEFAULT '',
username TEXT,
password TEXT,
login_url VARCHAR(500),
cookies_json TEXT,
cookies_updated_at TIMESTAMPTZ,
status VARCHAR(20) DEFAULT 'active',
last_login_at TIMESTAMPTZ,
last_injected_at TIMESTAMPTZ,
created_at TIMESTAMPTZ DEFAULT NOW(),
updated_at TIMESTAMPTZ DEFAULT NOW()
)
""")
op.execute(
"CREATE INDEX IF NOT EXISTS ix_agent_credentials_agent_id "
"ON agent_credentials(agent_id)"
)
def downgrade() -> None:
"""Drop agent_credentials table."""
op.execute("DROP INDEX IF EXISTS ix_agent_credentials_agent_id")
op.execute("DROP TABLE IF EXISTS agent_credentials")