{
"event": "PreToolUse",
"tool_name": "Read",
"tool_input": {
"file_path": "\/var\/www\/dev.campus.systemische-tools.de\/src\/Infrastructure\/Persistence\/SystemPromptRepository.php"
}
}
{
"tool_response": {
"type": "text",
"file": {
"filePath": "\/var\/www\/dev.campus.systemische-tools.de\/src\/Infrastructure\/Persistence\/SystemPromptRepository.php",
"content": "<?php\n\nnamespace Infrastructure\\Persistence;\n\nuse PDO;\n\nclass SystemPromptRepository\n{\n private PDO $pdo;\n\n public function __construct()\n {\n $this->pdo = new PDO(\n 'mysql:host=localhost;dbname=ki_dev;charset=utf8mb4',\n 'root',\n $this->getPassword(),\n [\n PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,\n PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,\n ]\n );\n }\n\n private function getPassword(): string\n {\n return 'v8mFLmkF2fth_r';\n }\n\n \/**\n * Get all active system prompts\n *\/\n public function findAllActive(): array\n {\n $stmt = $this->pdo->query('\n SELECT id, name, slug, version, content\n FROM system_prompts\n WHERE is_active = 1\n ORDER BY name\n ');\n\n return $stmt->fetchAll();\n }\n\n \/**\n * Find by ID\n *\/\n public function findById(int $id): ?array\n {\n $stmt = $this->pdo->prepare('SELECT * FROM system_prompts WHERE id = ?');\n $stmt->execute([$id]);\n $result = $stmt->fetch();\n\n return $result ?: null;\n }\n\n \/**\n * Find by slug (latest active version)\n *\/\n public function findBySlug(string $slug): ?array\n {\n $stmt = $this->pdo->prepare('\n SELECT * FROM system_prompts\n WHERE slug = ? AND is_active = 1\n ORDER BY version DESC\n LIMIT 1\n ');\n $stmt->execute([$slug]);\n $result = $stmt->fetch();\n\n return $result ?: null;\n }\n\n \/**\n * Create new system prompt\n *\/\n public function create(string $name, string $slug, string $content, ?array $variables = null): int\n {\n $stmt = $this->pdo->prepare('\n INSERT INTO system_prompts (name, slug, content, variables)\n VALUES (?, ?, ?, ?)\n ');\n $stmt->execute([\n $name,\n $slug,\n $content,\n $variables ? json_encode($variables) : null,\n ]);\n\n return (int) $this->pdo->lastInsertId();\n }\n\n \/**\n * Update with versioning (creates new version, deactivates old)\n *\/\n public function update(int $id, string $content, ?array $variables = null): int\n {\n $existing = $this->findById($id);\n if (!$existing) {\n throw new \\RuntimeException(\"System prompt not found: $id\");\n }\n\n \/\/ Deactivate old version\n $stmt = $this->pdo->prepare('UPDATE system_prompts SET is_active = 0 WHERE id = ?');\n $stmt->execute([$id]);\n\n \/\/ Create new version\n $stmt = $this->pdo->prepare('\n INSERT INTO system_prompts (name, slug, version, content, variables)\n VALUES (?, ?, ?, ?, ?)\n ');\n $stmt->execute([\n $existing['name'],\n $existing['slug'],\n $existing['version'] + 1,\n $content,\n $variables ? json_encode($variables) : null,\n ]);\n\n return (int) $this->pdo->lastInsertId();\n }\n}\n",
"numLines": 122,
"startLine": 1,
"totalLines": 122
}
}
}