{
"event": "PreToolUse",
"tool_name": "Edit",
"tool_input": {
"file_path": "\/var\/www\/dev.campus.systemische-tools.de\/src\/Infrastructure\/Persistence\/DocumentRepository.php",
"old_string": " public function __construct()\n {\n $this->db = DatabaseFactory::content();\n }",
"new_string": " public function __construct(PDO $pdo)\n {\n $this->db = $pdo;\n }"
}
}
{
"tool_response": {
"filePath": "\/var\/www\/dev.campus.systemische-tools.de\/src\/Infrastructure\/Persistence\/DocumentRepository.php",
"oldString": " public function __construct()\n {\n $this->db = DatabaseFactory::content();\n }",
"newString": " public function __construct(PDO $pdo)\n {\n $this->db = $pdo;\n }",
"originalFile": "<?php\n\ndeclare(strict_types=1);\n\nnamespace Infrastructure\\Persistence;\n\n\/\/ @responsibility: CRUD-Operationen für Dokumente im Semantic Explorer\n\nuse Domain\\Repository\\DocumentRepositoryInterface;\nuse PDO;\n\nfinal class DocumentRepository implements DocumentRepositoryInterface\n{\n private PDO $db;\n\n public function __construct()\n {\n $this->db = DatabaseFactory::content();\n }\n\n \/**\n * {@inheritDoc}\n *\/\n public function getStats(): array\n {\n $result = $this->db->query(\n 'SELECT\n COUNT(*) as total,\n SUM(CASE WHEN status = \"done\" THEN 1 ELSE 0 END) as processed,\n SUM(CASE WHEN status = \"error\" THEN 1 ELSE 0 END) as errors\n FROM documents'\n )->fetch();\n\n return $result !== false ? $result : ['total' => 0, 'processed' => 0, 'errors' => 0];\n }\n\n \/**\n * {@inheritDoc}\n *\/\n public function findAll(): array\n {\n return $this->db->query(\n 'SELECT d.id, d.filename, d.folder_path, d.mime_type, d.file_size,\n d.status, d.imported_at, d.processed_at,\n (SELECT COUNT(*) FROM chunks WHERE document_id = d.id) as chunk_count\n FROM documents d\n ORDER BY d.imported_at DESC'\n )->fetchAll();\n }\n\n \/**\n * {@inheritDoc}\n *\/\n public function findFiltered(string $status = '', string $search = ''): array\n {\n $sql = 'SELECT d.id, d.filename, d.folder_path, d.source_path, d.mime_type,\n d.file_size, d.status, d.imported_at, d.processed_at, d.error_message,\n (SELECT COUNT(*) FROM chunks WHERE document_id = d.id) as chunk_count,\n (SELECT COALESCE(SUM(token_count), 0) FROM chunks WHERE document_id = d.id) as token_count\n FROM documents d WHERE 1=1';\n\n $params = [];\n\n if ($status !== '') {\n $sql .= ' AND d.status = :status';\n $params['status'] = $status;\n }\n\n if ($search !== '') {\n $sql .= ' AND (d.filename LIKE :search OR d.source_path LIKE :search2)';\n $params['search'] = '%' . $search . '%';\n $params['search2'] = '%' . $search . '%';\n }\n\n $sql .= ' ORDER BY d.imported_at DESC';\n\n $stmt = $this->db->prepare($sql);\n $stmt->execute($params);\n\n return $stmt->fetchAll();\n }\n\n \/**\n * {@inheritDoc}\n *\/\n public function find(int $id): ?array\n {\n $stmt = $this->db->prepare('SELECT * FROM documents WHERE id = :id');\n $stmt->execute(['id' => $id]);\n $result = $stmt->fetch();\n\n return $result === false ? null : $result;\n }\n}\n",
"structuredPatch": [
{
"oldStart": 13,
"oldLines": 9,
"newStart": 13,
"newLines": 9,
"lines": [
" {",
" private PDO $db;",
" ",
"- public function __construct()",
"+ public function __construct(PDO $pdo)",
" {",
"- $this->db = DatabaseFactory::content();",
"+ $this->db = $pdo;",
" }",
" ",
" \/**"
]
}
],
"userModified": false,
"replaceAll": false
}
}