{
"event": "PreToolUse",
"tool_name": "Edit",
"tool_input": {
"file_path": "\/var\/www\/dev.campus.systemische-tools.de\/src\/Infrastructure\/Persistence\/OntologyRepository.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\/OntologyRepository.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 Ontologie-Klassen (Hierarchie + JSON-Properties)\n\nuse Domain\\Repository\\OntologyRepositoryInterface;\nuse PDO;\n\nfinal class OntologyRepository implements OntologyRepositoryInterface\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 findAll(): array\n {\n return $this->db->query(\n 'SELECT oc.*,\n COUNT(DISTINCT ec.entity_id) as entity_count,\n (SELECT COUNT(*) FROM ontology_classes WHERE parent_class_id = oc.id) as subclass_count\n FROM ontology_classes oc\n LEFT JOIN entity_classifications ec ON oc.id = ec.ontology_class_id\n GROUP BY oc.id\n ORDER BY oc.name'\n )->fetchAll();\n }\n\n \/**\n * {@inheritDoc}\n *\/\n public function getStats(): array\n {\n $result = $this->db->query(\n 'SELECT\n (SELECT COUNT(*) FROM ontology_classes) as total_classes,\n (SELECT COUNT(*) FROM ontology_classes WHERE parent_class_id IS NULL) as root_classes,\n (SELECT COUNT(DISTINCT entity_id) FROM entity_classifications) as classified_entities'\n )->fetch();\n\n return $result !== false ? $result : [\n 'total_classes' => 0,\n 'root_classes' => 0,\n 'classified_entities' => 0,\n ];\n }\n\n \/**\n * {@inheritDoc}\n *\/\n public function find(int $id): ?array\n {\n $stmt = $this->db->prepare('SELECT * FROM ontology_classes WHERE id = :id');\n $stmt->execute(['id' => $id]);\n $result = $stmt->fetch();\n\n return $result === false ? null : $result;\n }\n\n \/**\n * {@inheritDoc}\n *\/\n public function create(string $name, ?int $parentId = null, ?string $description = null, array $properties = []): int\n {\n $stmt = $this->db->prepare(\n 'INSERT INTO ontology_classes (name, parent_class_id, description, properties, created_at)\n VALUES (:name, :parent, :description, :properties, NOW())'\n );\n $stmt->execute([\n 'name' => $name,\n 'parent' => $parentId,\n 'description' => $description,\n 'properties' => json_encode($properties),\n ]);\n\n return (int) $this->db->lastInsertId();\n }\n\n \/**\n * {@inheritDoc}\n *\/\n public function update(int $id, string $name, ?int $parentId = null, ?string $description = null, array $properties = []): bool\n {\n $stmt = $this->db->prepare(\n 'UPDATE ontology_classes SET name = :name, parent_class_id = :parent,\n description = :description, properties = :properties WHERE id = :id'\n );\n\n return $stmt->execute([\n 'id' => $id,\n 'name' => $name,\n 'parent' => $parentId,\n 'description' => $description,\n 'properties' => json_encode($properties),\n ]);\n }\n\n \/**\n * {@inheritDoc}\n *\/\n public function delete(int $id): bool\n {\n \/\/ Check for subclasses\n $stmt = $this->db->prepare('SELECT COUNT(*) FROM ontology_classes WHERE parent_class_id = :id');\n $stmt->execute(['id' => $id]);\n\n if ((int) $stmt->fetchColumn() > 0) {\n return false; \/\/ Has subclasses, cannot delete\n }\n\n \/\/ Delete entity classifications\n $stmt = $this->db->prepare('DELETE FROM entity_classifications WHERE ontology_class_id = :id');\n $stmt->execute(['id' => $id]);\n\n \/\/ Delete class\n $stmt = $this->db->prepare('DELETE FROM ontology_classes WHERE id = :id');\n\n return $stmt->execute(['id' => $id]);\n }\n\n \/**\n * {@inheritDoc}\n *\/\n public function findForSelect(): array\n {\n return $this->db->query('SELECT id, name FROM ontology_classes ORDER BY name')->fetchAll();\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
}
}