{
"event": "PreToolUse",
"tool_name": "Write",
"tool_input": {
"file_path": "\/var\/www\/dev.campus.systemische-tools.de\/src\/Infrastructure\/Crawler\/CrawlerLinkRepository.php",
"content": "<?php\n\ndeclare(strict_types=1);\n\nnamespace Infrastructure\\Crawler;\n\n\/\/ @responsibility: Lesezugriff auf crawler.links\n\nuse Domain\\Crawler\\LinkSummary;\n\nfinal class CrawlerLinkRepository\n{\n public function __construct(private \\PDO $pdo)\n {\n }\n\n \/**\n * @return list<LinkSummary>\n *\/\n public function listByPage(int $pageId): array\n {\n $stmt = $this->pdo->prepare(\n 'SELECT id, page_id, target_url, anchor_text, is_internal, is_external,'\n . ' external_http_status, external_error'\n . ' FROM links WHERE page_id = :page_id ORDER BY id',\n );\n $stmt->execute([':page_id' => $pageId]);\n\n return array_map([$this, 'hydrate'], $stmt->fetchAll());\n }\n\n \/**\n * @param array<string, mixed> $row\n *\/\n private function hydrate(array $row): LinkSummary\n {\n return new LinkSummary(\n id: (int) $row['id'],\n pageId: (int) $row['page_id'],\n targetUrl: (string) $row['target_url'],\n anchorText: $row['anchor_text'] !== null ? (string) $row['anchor_text'] : null,\n isInternal: (bool) (int) $row['is_internal'],\n isExternal: (bool) (int) $row['is_external'],\n externalHttpStatus: $row['external_http_status'] !== null\n ? (int) $row['external_http_status'] : null,\n externalError: $row['external_error'] !== null\n ? (string) $row['external_error'] : null,\n );\n }\n}\n"
}
}
{
"tool_response": {
"type": "create",
"filePath": "\/var\/www\/dev.campus.systemische-tools.de\/src\/Infrastructure\/Crawler\/CrawlerLinkRepository.php",
"content": "<?php\n\ndeclare(strict_types=1);\n\nnamespace Infrastructure\\Crawler;\n\n\/\/ @responsibility: Lesezugriff auf crawler.links\n\nuse Domain\\Crawler\\LinkSummary;\n\nfinal class CrawlerLinkRepository\n{\n public function __construct(private \\PDO $pdo)\n {\n }\n\n \/**\n * @return list<LinkSummary>\n *\/\n public function listByPage(int $pageId): array\n {\n $stmt = $this->pdo->prepare(\n 'SELECT id, page_id, target_url, anchor_text, is_internal, is_external,'\n . ' external_http_status, external_error'\n . ' FROM links WHERE page_id = :page_id ORDER BY id',\n );\n $stmt->execute([':page_id' => $pageId]);\n\n return array_map([$this, 'hydrate'], $stmt->fetchAll());\n }\n\n \/**\n * @param array<string, mixed> $row\n *\/\n private function hydrate(array $row): LinkSummary\n {\n return new LinkSummary(\n id: (int) $row['id'],\n pageId: (int) $row['page_id'],\n targetUrl: (string) $row['target_url'],\n anchorText: $row['anchor_text'] !== null ? (string) $row['anchor_text'] : null,\n isInternal: (bool) (int) $row['is_internal'],\n isExternal: (bool) (int) $row['is_external'],\n externalHttpStatus: $row['external_http_status'] !== null\n ? (int) $row['external_http_status'] : null,\n externalError: $row['external_error'] !== null\n ? (string) $row['external_error'] : null,\n );\n }\n}\n",
"structuredPatch": [],
"originalFile": null,
"userModified": false
}
}