{
"event": "PreToolUse",
"tool_name": "Write",
"tool_input": {
"file_path": "\/var\/www\/dev.campus.systemische-tools.de\/src\/Infrastructure\/Persistence\/PipelineStepRepository.php",
"content": "<?php\n\ndeclare(strict_types=1);\n\nnamespace Infrastructure\\Persistence;\n\n\/\/ @responsibility: Persistenz für Pipeline-Steps\n\nuse Domain\\Repository\\PipelineStepRepositoryInterface;\n\nclass PipelineStepRepository implements PipelineStepRepositoryInterface\n{\n private \\PDO $pdo;\n\n public function __construct(\\PDO $pdo)\n {\n $this->pdo = $pdo;\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 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 = [];\n\n if (isset($stepData['step_type'])) {\n $sets[] = 'step_type = ?';\n $params[] = $stepData['step_type'];\n }\n if (isset($stepData['config'])) {\n $sets[] = 'config = ?';\n $params[] = is_array($stepData['config'])\n ? json_encode($stepData['config'])\n : $stepData['config'];\n }\n if (isset($stepData['sort_order'])) {\n $sets[] = 'sort_order = ?';\n $params[] = $stepData['sort_order'];\n }\n if (isset($stepData['enabled'])) {\n $sets[] = 'enabled = ?';\n $params[] = $stepData['enabled'];\n }\n\n if ($sets === []) {\n return;\n }\n\n $params[] = $stepId;\n $stmt = $this->pdo->prepare(\n 'UPDATE pipeline_steps SET ' . implode(', ', $sets) . ' WHERE id = ?'\n );\n $stmt->execute($params);\n }\n\n public function deleteStep(int $stepId): void\n {\n $stmt = $this->pdo->prepare('DELETE FROM pipeline_steps WHERE id = ?');\n $stmt->execute([$stepId]);\n }\n\n \/**\n * @param array<int> $stepIds\n *\/\n public function reorderSteps(int $pipelineId, array $stepIds): void\n {\n $stmt = $this->pdo->prepare(\n 'UPDATE pipeline_steps SET sort_order = ? WHERE id = ? AND pipeline_id = ?'\n );\n\n foreach ($stepIds as $order => $stepId) {\n $stmt->execute([$order + 1, $stepId, $pipelineId]);\n }\n }\n}\n"
}
}
{
"tool_response": {
"type": "create",
"filePath": "\/var\/www\/dev.campus.systemische-tools.de\/src\/Infrastructure\/Persistence\/PipelineStepRepository.php",
"content": "<?php\n\ndeclare(strict_types=1);\n\nnamespace Infrastructure\\Persistence;\n\n\/\/ @responsibility: Persistenz für Pipeline-Steps\n\nuse Domain\\Repository\\PipelineStepRepositoryInterface;\n\nclass PipelineStepRepository implements PipelineStepRepositoryInterface\n{\n private \\PDO $pdo;\n\n public function __construct(\\PDO $pdo)\n {\n $this->pdo = $pdo;\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 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 = [];\n\n if (isset($stepData['step_type'])) {\n $sets[] = 'step_type = ?';\n $params[] = $stepData['step_type'];\n }\n if (isset($stepData['config'])) {\n $sets[] = 'config = ?';\n $params[] = is_array($stepData['config'])\n ? json_encode($stepData['config'])\n : $stepData['config'];\n }\n if (isset($stepData['sort_order'])) {\n $sets[] = 'sort_order = ?';\n $params[] = $stepData['sort_order'];\n }\n if (isset($stepData['enabled'])) {\n $sets[] = 'enabled = ?';\n $params[] = $stepData['enabled'];\n }\n\n if ($sets === []) {\n return;\n }\n\n $params[] = $stepId;\n $stmt = $this->pdo->prepare(\n 'UPDATE pipeline_steps SET ' . implode(', ', $sets) . ' WHERE id = ?'\n );\n $stmt->execute($params);\n }\n\n public function deleteStep(int $stepId): void\n {\n $stmt = $this->pdo->prepare('DELETE FROM pipeline_steps WHERE id = ?');\n $stmt->execute([$stepId]);\n }\n\n \/**\n * @param array<int> $stepIds\n *\/\n public function reorderSteps(int $pipelineId, array $stepIds): void\n {\n $stmt = $this->pdo->prepare(\n 'UPDATE pipeline_steps SET sort_order = ? WHERE id = ? AND pipeline_id = ?'\n );\n\n foreach ($stepIds as $order => $stepId) {\n $stmt->execute([$order + 1, $stepId, $pipelineId]);\n }\n }\n}\n",
"structuredPatch": [],
"originalFile": null
}
}