{
"event": "PreToolUse",
"tool_name": "Write",
"tool_input": {
"file_path": "\/var\/www\/dev.campus.systemische-tools.de\/src\/Application\/ContentCollectionService.php",
"content": "<?php\n\nnamespace Application;\n\nuse Infrastructure\\Persistence\\CollectionRepository;\nuse Infrastructure\\Validation\\CollectionValidator;\n\n\/**\n * Service for content collection operations.\n *\n * Handles collection retrieval, validation, and compatibility checks.\n *\/\nfinal class ContentCollectionService\n{\n public function __construct(\n private CollectionRepository $repository,\n private CollectionValidator $validator\n ) {\n }\n\n \/**\n * Get available collections for content generation.\n *\n * @return array<int, array<string, mixed>>\n *\/\n public function getAvailable(): array\n {\n $collections = $this->repository->getSearchable();\n\n if ($collections === []) {\n return [\n ['collection_id' => 'documents', 'display_name' => 'Dokumente', 'points_count' => 0, 'vector_size' => 1024],\n ];\n }\n\n return $collections;\n }\n\n \/**\n * Validate and filter collections against available ones.\n *\n * @param array<string> $collections\n * @return array<string>\n *\/\n public function validate(array $collections): array\n {\n $availableIds = array_column($this->getAvailable(), 'collection_id');\n $valid = array_filter($collections, fn($c) => in_array($c, $availableIds, true));\n\n return array_values($valid);\n }\n\n \/**\n * Check if collections are compatible (same vector dimensions).\n *\n * @param array<string> $collectionIds\n * @return array{valid: bool, error: string|null}\n *\/\n public function checkCompatibility(array $collectionIds): array\n {\n if (empty($collectionIds)) {\n return ['valid' => true, 'error' => null];\n }\n\n $result = $this->validator->validateSelection($collectionIds);\n\n return [\n 'valid' => $result->isValid(),\n 'error' => $result->getError(),\n ];\n }\n\n \/**\n * Validate collections and check compatibility in one call.\n *\n * @param array<string> $collections\n * @return array{collections: array<string>, valid: bool, error: string|null}\n *\/\n public function validateWithCompatibility(array $collections): array\n {\n $validated = $this->validate($collections);\n\n if (empty($validated)) {\n return [\n 'collections' => [],\n 'valid' => false,\n 'error' => 'Keine gültigen Collections ausgewählt',\n ];\n }\n\n $compatibility = $this->checkCompatibility($validated);\n\n return [\n 'collections' => $validated,\n 'valid' => $compatibility['valid'],\n 'error' => $compatibility['error'],\n ];\n }\n}\n"
}
}
{
"tool_response": {
"type": "create",
"filePath": "\/var\/www\/dev.campus.systemische-tools.de\/src\/Application\/ContentCollectionService.php",
"content": "<?php\n\nnamespace Application;\n\nuse Infrastructure\\Persistence\\CollectionRepository;\nuse Infrastructure\\Validation\\CollectionValidator;\n\n\/**\n * Service for content collection operations.\n *\n * Handles collection retrieval, validation, and compatibility checks.\n *\/\nfinal class ContentCollectionService\n{\n public function __construct(\n private CollectionRepository $repository,\n private CollectionValidator $validator\n ) {\n }\n\n \/**\n * Get available collections for content generation.\n *\n * @return array<int, array<string, mixed>>\n *\/\n public function getAvailable(): array\n {\n $collections = $this->repository->getSearchable();\n\n if ($collections === []) {\n return [\n ['collection_id' => 'documents', 'display_name' => 'Dokumente', 'points_count' => 0, 'vector_size' => 1024],\n ];\n }\n\n return $collections;\n }\n\n \/**\n * Validate and filter collections against available ones.\n *\n * @param array<string> $collections\n * @return array<string>\n *\/\n public function validate(array $collections): array\n {\n $availableIds = array_column($this->getAvailable(), 'collection_id');\n $valid = array_filter($collections, fn($c) => in_array($c, $availableIds, true));\n\n return array_values($valid);\n }\n\n \/**\n * Check if collections are compatible (same vector dimensions).\n *\n * @param array<string> $collectionIds\n * @return array{valid: bool, error: string|null}\n *\/\n public function checkCompatibility(array $collectionIds): array\n {\n if (empty($collectionIds)) {\n return ['valid' => true, 'error' => null];\n }\n\n $result = $this->validator->validateSelection($collectionIds);\n\n return [\n 'valid' => $result->isValid(),\n 'error' => $result->getError(),\n ];\n }\n\n \/**\n * Validate collections and check compatibility in one call.\n *\n * @param array<string> $collections\n * @return array{collections: array<string>, valid: bool, error: string|null}\n *\/\n public function validateWithCompatibility(array $collections): array\n {\n $validated = $this->validate($collections);\n\n if (empty($validated)) {\n return [\n 'collections' => [],\n 'valid' => false,\n 'error' => 'Keine gültigen Collections ausgewählt',\n ];\n }\n\n $compatibility = $this->checkCompatibility($validated);\n\n return [\n 'collections' => $validated,\n 'valid' => $compatibility['valid'],\n 'error' => $compatibility['error'],\n ];\n }\n}\n",
"structuredPatch": [],
"originalFile": null
}
}