{
"event": "PreToolUse",
"tool_name": "Read",
"tool_input": {
"file_path": "\/var\/www\/dev.campus.systemische-tools.de\/docs\/plan-form-components-refactoring.md",
"offset": 360,
"limit": 50
}
}
{
"tool_response": {
"type": "text",
"file": {
"filePath": "\/var\/www\/dev.campus.systemische-tools.de\/docs\/plan-form-components-refactoring.md",
"content": "}\n```\n\n### 0b.6 Repository-Interface\n\n```php\n\/\/ CollectionRepository.php\ninterface CollectionRepositoryInterface\n{\n \/\/ Für Dropdowns\n public function getActive(): array;\n public function getSearchable(): array;\n\n \/\/ Für Admin\n public function findAll(): array;\n public function findById(int $id): ?array;\n public function findByCollectionId(string $collectionId): ?array;\n\n \/\/ Für Sync\n public function upsert(array $data): void;\n public function updateMetadata(string $collectionId, array $metadata): void;\n\n \/\/ Validierung\n public function isActive(string $collectionId): bool;\n public function isSearchable(string $collectionId): bool;\n}\n```\n\n### 0b.7 Dropdown-Query\n\n```php\n\/\/ CollectionRepository::getSearchable()\npublic function getSearchable(): array\n{\n return $this->db->query(\"\n SELECT collection_id, display_name, points_count\n FROM rag_collections\n WHERE is_active = 1 AND is_searchable = 1\n ORDER BY sort_order ASC, display_name ASC\n \")->fetchAll();\n}\n```\n\n### 0b.8 Partial: collections-select.php\n\n```php\n\/\/ \/src\/View\/partials\/form\/collections-select.php\n<?php\n$collections = $collections ?? [];\n$selected = $selected ?? [];",
"numLines": 50,
"startLine": 360,
"totalLines": 3840
}
}
}