{
"event": "PostToolUse",
"raw_data": {
"session_id": "bf8a0fc3-34fa-408b-8067-b725d1fe9b14",
"transcript_path": "\/root\/.claude\/projects\/-var-www\/bf8a0fc3-34fa-408b-8067-b725d1fe9b14.jsonl",
"cwd": "\/var\/www\/dev.campus.systemische-tools.de",
"permission_mode": "plan",
"hook_event_name": "PostToolUse",
"tool_name": "Read",
"tool_input": {
"file_path": "\/var\/www\/dev.campus.systemische-tools.de\/src\/Infrastructure\/Persistence\/PipelineRepository.php",
"limit": 200
},
"tool_response": {
"type": "text",
"file": {
"filePath": "\/var\/www\/dev.campus.systemische-tools.de\/src\/Infrastructure\/Persistence\/PipelineRepository.php",
"content": "<?php\n\nnamespace Infrastructure\\Persistence;\n\nuse Domain\\Repository\\PipelineRepositoryInterface;\nuse Infrastructure\\Config\\DatabaseFactory;\n\n\/**\n * Repository for Pipeline operations.\n *\/\nclass PipelineRepository implements PipelineRepositoryInterface\n{\n private \\PDO $pdo;\n\n public function __construct(?\\PDO $pdo = null)\n {\n $this->pdo = $pdo ?? DatabaseFactory::content();\n }\n\n public function findById(int $id): ?array\n {\n $stmt = $this->pdo->prepare('SELECT * FROM pipeline_configs WHERE id = ?');\n $stmt->execute([$id]);\n $result = $stmt->fetch(\\PDO::FETCH_ASSOC);\n\n if ($result === false) {\n return null;\n }\n\n $result['extensions'] = json_decode($result['extensions'] ?? '[]', true);\n $result['steps'] = $this->findSteps($id);\n\n return $result;\n }\n\n public function findByName(string $name): ?array\n {\n $stmt = $this->pdo->prepare('SELECT * FROM pipeline_configs WHERE name = ?');\n $stmt->execute([$name]);\n $result = $stmt->fetch(\\PDO::FETCH_ASSOC);\n\n if ($result === false) {\n return null;\n }\n\n $result['extensions'] = json_decode($result['extensions'] ?? '[]', true);\n $result['steps'] = $this->findSteps((int) $result['id']);\n\n return $result;\n }\n\n public function findDefault(): ?array\n {\n $stmt = $this->pdo->query('SELECT * FROM pipeline_configs WHERE is_default = 1 LIMIT 1');\n if ($stmt === false) {\n return null;\n }\n $result = $stmt->fetch(\\PDO::FETCH_ASSOC);\n\n if ($result === false) {\n return null;\n }\n\n $result['extensions'] = json_decode($result['extensions'] ?? '[]', true);\n $result['steps'] = $this->findSteps((int) $result['id']);\n\n return $result;\n }\n\n public function findAll(int $limit = 50): array\n {\n $stmt = $this->pdo->query(\n 'SELECT p.*,\n (SELECT COUNT(*) FROM pipeline_steps WHERE pipeline_id = p.id AND enabled = 1) as active_steps,\n (SELECT COUNT(*) FROM pipeline_runs WHERE pipeline_id = p.id) as total_runs,\n (SELECT MAX(created_at) FROM pipeline_runs WHERE pipeline_id = p.id) as last_run_at\n FROM pipeline_configs p\n ORDER BY p.is_default DESC, p.name ASC\n LIMIT ' . $limit\n );\n\n if ($stmt === false) {\n return [];\n }\n\n $results = $stmt->fetchAll(\\PDO::FETCH_ASSOC);\n\n foreach ($results as &$row) {\n $row['extensions'] = json_decode($row['extensions'] ?? '[]', true);\n }\n\n return $results;\n }\n\n public function findSteps(int $pipelineId): array\n {\n $stmt = $this->pdo->prepare(\n 'SELECT * FROM pipeline_steps WHERE pipeline_id = ? ORDER BY sort_order ASC'\n );\n $stmt->execute([$pipelineId]);\n $results = $stmt->fetchAll(\\PDO::FETCH_ASSOC);\n\n foreach ($results as &$row) {\n $row['config'] = json_decode($row['config'] ?? '{}', true);\n }\n\n return $results;\n }\n\n public function create(array $data): int\n {\n $extensions = is_array($data['extensions'] ?? null)\n ? json_encode($data['extensions'])\n : ($data['extensions'] ?? '[]');\n\n $stmt = $this->pdo->prepare(\n 'INSERT INTO pipeline_configs (name, description, is_default, source_path, extensions)\n VALUES (?, ?, ?, ?, ?)'\n );\n $stmt->execute([\n $data['name'],\n $data['description'] ?? null,\n $data['is_default'] ?? 0,\n $data['source_path'] ?? '\/var\/www\/nextcloud\/data\/root\/files\/Documents',\n $extensions,\n ]);\n\n return (int) $this->pdo->lastInsertId();\n }\n\n public function update(int $id, array $data): void\n {\n $sets = [];\n $params = [];\n\n if (isset($data['name'])) {\n $sets[] = 'name = ?';\n $params[] = $data['name'];\n }\n if (isset($data['description'])) {\n $sets[] = 'description = ?';\n $params[] = $data['description'];\n }\n if (isset($data['is_default'])) {\n $sets[] = 'is_default = ?';\n $params[] = $data['is_default'];\n }\n if (isset($data['source_path'])) {\n $sets[] = 'source_path = ?';\n $params[] = $data['source_path'];\n }\n if (isset($data['extensions'])) {\n $sets[] = 'extensions = ?';\n $params[] = is_array($data['extensions'])\n ? json_encode($data['extensions'])\n : $data['extensions'];\n }\n\n if ($sets === []) {\n return;\n }\n\n $params[] = $id;\n $stmt = $this->pdo->prepare(\n 'UPDATE pipeline_configs SET ' . implode(', ', $sets) . ' WHERE id = ?'\n );\n $stmt->execute($params);\n }\n\n public function delete(int $id): void\n {\n $stmt = $this->pdo->prepare('DELETE FROM pipeline_configs WHERE id = ?');\n $stmt->execute([$id]);\n }\n\n public function addStep(int $pipelineId, array $stepData): int\n {\n $config = is_array($stepData['config'] ?? null)\n ? json_encode($stepData['config'])\n : ($stepData['config'] ?? '{}');\n\n $stmt = $this->pdo->prepare(\n 'INSERT INTO pipeline_steps (pipeline_id, step_type, config, sort_order, enabled)\n VALUES (?, ?, ?, ?, ?)'\n );\n $stmt->execute([\n $pipelineId,\n $stepData['step_type'],\n $config,\n $stepData['sort_order'] ?? 0,\n $stepData['enabled'] ?? 1,\n ]);\n\n return (int) $this->pdo->lastInsertId();\n }\n\n public function updateStep(int $stepId, array $stepData): void\n {\n $sets = [];\n $params = [];",
"numLines": 200,
"startLine": 1,
"totalLines": 372
}
},
"tool_use_id": "toolu_01QH8FMWmef6cnVbLMWBkiXU"
}
}