{
"event": "PostToolUse",
"tool_name": "Read",
"tool_response": {
"type": "text",
"file": {
"filePath": "\/var\/www\/mcp-servers\/mcp_contracts\/infrastructure\/db_connection.py",
"content": "\"\"\"Database Connection für MCP-Contracts\"\"\"\nimport sys\nfrom contextlib import contextmanager\nfrom typing import Generator\n\nimport pymysql\nfrom pymysql.connections import Connection\n\nsys.path.insert(0, \"\/var\/www\/mcp-servers\/mcp_contracts\")\nfrom config import Config\n\n\nclass DatabaseConnection:\n \"\"\"Stellt Datenbankverbindungen bereit\"\"\"\n\n @classmethod\n @contextmanager\n def get_connection(cls) -> Generator[Connection, None, None]:\n \"\"\"Gibt eine Datenbankverbindung zurück (Context Manager)\"\"\"\n conn = None\n try:\n conn = pymysql.connect(\n host=Config.DB_HOST,\n port=Config.DB_PORT,\n user=Config.DB_USER,\n password=Config.DB_PASSWORD,\n database=Config.DB_NAME,\n charset=\"utf8mb4\",\n cursorclass=pymysql.cursors.DictCursor,\n autocommit=False,\n )\n yield conn\n conn.commit()\n except Exception as e:\n if conn:\n conn.rollback()\n raise e\n finally:\n if conn:\n conn.close()\n\n @classmethod\n @contextmanager\n def get_log_connection(cls) -> Generator[Connection, None, None]:\n \"\"\"Separate Verbindung für Logging (mcp_logger User)\"\"\"\n conn = None\n try:\n conn = pymysql.connect(\n host=Config.LOG_DB_HOST,\n user=Config.LOG_DB_USER,\n password=Config.LOG_DB_PASSWORD,\n database=Config.LOG_DB_NAME,\n charset=\"utf8mb4\",\n cursorclass=pymysql.cursors.DictCursor,\n autocommit=True, # Logging immer sofort committen\n )\n yield conn\n finally:\n if conn:\n conn.close()\n",
"numLines": 61,
"startLine": 1,
"totalLines": 61
}
}
}