bifroest/app/migrations/versions/0023_cleanup_databases.py
2026-10-27 08:34:17 +01:00

38 lines
1.3 KiB
Python

"""Altlasten der Datenbank-Quellen entfernen; Einstufung der Datenbank-Tools kommt vom Treiber
Revision ID: 0023
Revises: 0022
Erstellt: 2026-10-25 18:00:00
"""
from alembic import op
revision = '0023'
down_revision = '0022'
branch_labels = None
depends_on = None
def upgrade() -> None:
# Datenbanken sind MCP-Verbindungen; Quellen der Art database und die Tools db_* gibt es nicht mehr.
# Regeln je Quelle hängen per CASCADE an der Quelle.
op.execute("DELETE FROM data_sources WHERE kind IN ('database', 'postgres')")
op.execute("DELETE FROM workspace_tool_policies WHERE tool_name IN "
"('db_list_tables', 'db_describe_table', 'db_query')")
op.execute("DELETE FROM tool_definitions WHERE kind IN ('database', 'postgres')")
# Tools eines Treibers sind das Vorbild; Tools seiner Datenbanken übernehmen ihre Einstufung von dort
op.execute("""
UPDATE tool_definitions d SET inherited_from = NULL
FROM mcp_servers s WHERE d.kind = 'mcp:' || s.name AND s.role = 'database'
""")
op.execute("""
UPDATE tool_definitions d SET inherited_from = t.name
FROM mcp_servers c JOIN mcp_servers s ON s.id = c.template_id
JOIN tool_definitions t ON t.kind = 'mcp:' || s.name
WHERE d.kind = 'mcp:' || c.name AND t.fingerprint = d.fingerprint
""")
def downgrade() -> None:
pass