{
"event": "PreToolUse",
"tool_name": "Edit",
"tool_input": {
"file_path": "\/var\/www\/dev.campus.systemische-tools.de\/crawler\/scripts\/bootstrap_db.py",
"old_string": "def _split_statements(sql: str) -> list[str]:\n cleaned: list[str] = []\n for raw in sql.split(\";\"):\n stmt = raw.strip()\n if stmt and not stmt.startswith(\"--\"):\n cleaned.append(stmt)\n return cleaned",
"new_string": "def _split_statements(sql: str) -> list[str]:\n stripped = \"\\n\".join(\n line for line in sql.splitlines() if not line.lstrip().startswith(\"--\")\n )\n return [s.strip() for s in stripped.split(\";\") if s.strip()]",
"replace_all": false
}
}
{
"tool_response": {
"filePath": "\/var\/www\/dev.campus.systemische-tools.de\/crawler\/scripts\/bootstrap_db.py",
"oldString": "def _split_statements(sql: str) -> list[str]:\n cleaned: list[str] = []\n for raw in sql.split(\";\"):\n stmt = raw.strip()\n if stmt and not stmt.startswith(\"--\"):\n cleaned.append(stmt)\n return cleaned",
"newString": "def _split_statements(sql: str) -> list[str]:\n stripped = \"\\n\".join(\n line for line in sql.splitlines() if not line.lstrip().startswith(\"--\")\n )\n return [s.strip() for s in stripped.split(\";\") if s.strip()]",
"originalFile": "\"\"\"T-001 \/ T-002: Creates the `crawler` database and applies schema.\n\nUses credentials from \/etc\/environment via pipeline config helper.\nRun once. Idempotent (IF NOT EXISTS).\n\"\"\"\nfrom __future__ import annotations\n\nimport pathlib\nimport sys\n\nsys.path.insert(0, \"\/var\/www\/scripts\/pipeline\")\nfrom config import DB_CONFIG # noqa: E402\n\nimport mysql.connector # noqa: E402\n\nDB_NAME = \"crawler\"\nSCHEMA_PATH = pathlib.Path(\n \"\/var\/www\/dev.campus.systemische-tools.de\/crawler\/src\/db\/schema.sql\"\n)\n\n\ndef connect_server() -> mysql.connector.MySQLConnection:\n return mysql.connector.connect(\n host=DB_CONFIG[\"host\"],\n user=DB_CONFIG[\"user\"],\n password=DB_CONFIG[\"password\"],\n )\n\n\ndef ensure_database(cur: mysql.connector.cursor.MySQLCursor) -> None:\n cur.execute(\n f\"CREATE DATABASE IF NOT EXISTS {DB_NAME} \"\n \"CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci\"\n )\n\n\ndef apply_schema(cur: mysql.connector.cursor.MySQLCursor) -> int:\n if not SCHEMA_PATH.exists():\n return 0\n cur.execute(f\"USE {DB_NAME}\")\n sql = SCHEMA_PATH.read_text(encoding=\"utf-8\")\n count = 0\n for stmt in _split_statements(sql):\n cur.execute(stmt)\n count += 1\n return count\n\n\ndef _split_statements(sql: str) -> list[str]:\n cleaned: list[str] = []\n for raw in sql.split(\";\"):\n stmt = raw.strip()\n if stmt and not stmt.startswith(\"--\"):\n cleaned.append(stmt)\n return cleaned\n\n\ndef main() -> int:\n conn = connect_server()\n try:\n cur = conn.cursor()\n ensure_database(cur)\n applied = apply_schema(cur)\n conn.commit()\n print(f\"OK database={DB_NAME} schema_statements={applied}\")\n return 0\n finally:\n conn.close()\n\n\nif __name__ == \"__main__\":\n sys.exit(main())\n",
"structuredPatch": [
{
"oldStart": 47,
"oldLines": 12,
"newStart": 47,
"newLines": 10,
"lines": [
" ",
" ",
" def _split_statements(sql: str) -> list[str]:",
"- cleaned: list[str] = []",
"- for raw in sql.split(\";\"):",
"- stmt = raw.strip()",
"- if stmt and not stmt.startswith(\"--\"):",
"- cleaned.append(stmt)",
"- return cleaned",
"+ stripped = \"\\n\".join(",
"+ line for line in sql.splitlines() if not line.lstrip().startswith(\"--\")",
"+ )",
"+ return [s.strip() for s in stripped.split(\";\") if s.strip()]",
" ",
" ",
" def main() -> int:"
]
}
],
"userModified": false,
"replaceAll": false
}
}