{
"event": "PreToolUse",
"tool_name": "Write",
"tool_input": {
"file_path": "\/var\/www\/dev.campus.systemische-tools.de\/src\/Infrastructure\/Persistence\/PipelineRunRepository.php",
"content": "<?php\n\ndeclare(strict_types=1);\n\nnamespace Infrastructure\\Persistence;\n\n\/\/ @responsibility: Persistenz für Pipeline-Runs\n\nuse Domain\\Repository\\PipelineRunRepositoryInterface;\n\nclass PipelineRunRepository implements PipelineRunRepositoryInterface\n{\n private \\PDO $pdo;\n\n public function __construct(\\PDO $pdo)\n {\n $this->pdo = $pdo;\n }\n\n public function findRuns(int $pipelineId, int $limit = 20): array\n {\n $stmt = $this->pdo->prepare(\n 'SELECT * FROM pipeline_runs WHERE pipeline_id = ? ORDER BY created_at DESC LIMIT ?'\n );\n $stmt->execute([$pipelineId, $limit]);\n\n return $stmt->fetchAll(\\PDO::FETCH_ASSOC);\n }\n\n public function findRunById(int $runId): ?array\n {\n $stmt = $this->pdo->prepare('SELECT * FROM pipeline_runs WHERE id = ?');\n $stmt->execute([$runId]);\n $result = $stmt->fetch(\\PDO::FETCH_ASSOC);\n\n return $result !== false ? $result : null;\n }\n\n public function findLatestRun(int $pipelineId): ?array\n {\n $stmt = $this->pdo->prepare(\n 'SELECT * FROM pipeline_runs WHERE pipeline_id = ? ORDER BY created_at DESC LIMIT 1'\n );\n $stmt->execute([$pipelineId]);\n $result = $stmt->fetch(\\PDO::FETCH_ASSOC);\n\n return $result !== false ? $result : null;\n }\n\n public function createRun(int $pipelineId): int\n {\n $stmt = $this->pdo->prepare(\n 'INSERT INTO pipeline_runs (pipeline_id, status, started_at) VALUES (?, ?, NOW())'\n );\n $stmt->execute([$pipelineId, 'running']);\n\n return (int) $this->pdo->lastInsertId();\n }\n\n public function updateRun(int $runId, array $data): void\n {\n $allowedColumns = [\n 'status',\n 'completed_at',\n 'documents_total',\n 'documents_processed',\n 'documents_failed',\n 'chunks_created',\n 'embeddings_created',\n 'error_log',\n 'current_step',\n 'current_document',\n 'last_update_at',\n 'log_tail',\n ];\n\n $sets = [];\n $params = [];\n\n foreach ($data as $column => $value) {\n if (in_array($column, $allowedColumns, true)) {\n $sets[] = $column . ' = ?';\n $params[] = $value;\n }\n }\n\n if ($sets === []) {\n return;\n }\n\n $params[] = $runId;\n $stmt = $this->pdo->prepare(\n 'UPDATE pipeline_runs SET ' . implode(', ', $sets) . ' WHERE id = ?'\n );\n $stmt->execute($params);\n }\n}\n"
}
}
{
"tool_response": {
"type": "create",
"filePath": "\/var\/www\/dev.campus.systemische-tools.de\/src\/Infrastructure\/Persistence\/PipelineRunRepository.php",
"content": "<?php\n\ndeclare(strict_types=1);\n\nnamespace Infrastructure\\Persistence;\n\n\/\/ @responsibility: Persistenz für Pipeline-Runs\n\nuse Domain\\Repository\\PipelineRunRepositoryInterface;\n\nclass PipelineRunRepository implements PipelineRunRepositoryInterface\n{\n private \\PDO $pdo;\n\n public function __construct(\\PDO $pdo)\n {\n $this->pdo = $pdo;\n }\n\n public function findRuns(int $pipelineId, int $limit = 20): array\n {\n $stmt = $this->pdo->prepare(\n 'SELECT * FROM pipeline_runs WHERE pipeline_id = ? ORDER BY created_at DESC LIMIT ?'\n );\n $stmt->execute([$pipelineId, $limit]);\n\n return $stmt->fetchAll(\\PDO::FETCH_ASSOC);\n }\n\n public function findRunById(int $runId): ?array\n {\n $stmt = $this->pdo->prepare('SELECT * FROM pipeline_runs WHERE id = ?');\n $stmt->execute([$runId]);\n $result = $stmt->fetch(\\PDO::FETCH_ASSOC);\n\n return $result !== false ? $result : null;\n }\n\n public function findLatestRun(int $pipelineId): ?array\n {\n $stmt = $this->pdo->prepare(\n 'SELECT * FROM pipeline_runs WHERE pipeline_id = ? ORDER BY created_at DESC LIMIT 1'\n );\n $stmt->execute([$pipelineId]);\n $result = $stmt->fetch(\\PDO::FETCH_ASSOC);\n\n return $result !== false ? $result : null;\n }\n\n public function createRun(int $pipelineId): int\n {\n $stmt = $this->pdo->prepare(\n 'INSERT INTO pipeline_runs (pipeline_id, status, started_at) VALUES (?, ?, NOW())'\n );\n $stmt->execute([$pipelineId, 'running']);\n\n return (int) $this->pdo->lastInsertId();\n }\n\n public function updateRun(int $runId, array $data): void\n {\n $allowedColumns = [\n 'status',\n 'completed_at',\n 'documents_total',\n 'documents_processed',\n 'documents_failed',\n 'chunks_created',\n 'embeddings_created',\n 'error_log',\n 'current_step',\n 'current_document',\n 'last_update_at',\n 'log_tail',\n ];\n\n $sets = [];\n $params = [];\n\n foreach ($data as $column => $value) {\n if (in_array($column, $allowedColumns, true)) {\n $sets[] = $column . ' = ?';\n $params[] = $value;\n }\n }\n\n if ($sets === []) {\n return;\n }\n\n $params[] = $runId;\n $stmt = $this->pdo->prepare(\n 'UPDATE pipeline_runs SET ' . implode(', ', $sets) . ' WHERE id = ?'\n );\n $stmt->execute($params);\n }\n}\n",
"structuredPatch": [],
"originalFile": null
}
}