Backup #823
| ID | 823 |
| Dateipfad | /var/www/dev.campus.systemische-tools.de/src/Application/ContentCollectionService.php |
| Version | 1 |
| Typ |
modified |
| Größe | 2.7 KB |
| Hash | 0c3cbd3053b7b07113d63bd989836b04d83f92adaeeb9ba2e5c9da8b680ec4ff |
| Datum | 2025-12-23 08:09:35 |
| Geändert von | claude-code-hook |
| Grund | Claude Code Pre-Hook Backup vor Edit-Operation |
| Datei existiert |
Ja
|
Dateiinhalt
<?php
namespace Application;
use Infrastructure\Persistence\CollectionRepository;
use Infrastructure\Validation\CollectionValidator;
/**
* Service for content collection operations.
*
* Handles collection retrieval, validation, and compatibility checks.
*/
final class ContentCollectionService
{
public function __construct(
private CollectionRepository $repository,
private CollectionValidator $validator
) {
}
/**
* Get available collections for content generation.
*
* @return array<int, array<string, mixed>>
*/
public function getAvailable(): array
{
$collections = $this->repository->getSearchable();
if ($collections === []) {
return [
['collection_id' => 'documents', 'display_name' => 'Dokumente', 'points_count' => 0, 'vector_size' => 1024],
];
}
return $collections;
}
/**
* Validate and filter collections against available ones.
*
* @param array<string> $collections
* @return array<string>
*/
public function validate(array $collections): array
{
$availableIds = array_column($this->getAvailable(), 'collection_id');
$valid = array_filter($collections, fn ($c) => in_array($c, $availableIds, true));
return array_values($valid);
}
/**
* Check if collections are compatible (same vector dimensions).
*
* @param array<string> $collectionIds
* @return array{valid: bool, error: string|null}
*/
public function checkCompatibility(array $collectionIds): array
{
if (empty($collectionIds)) {
return ['valid' => true, 'error' => null];
}
$result = $this->validator->validateSelection($collectionIds);
return [
'valid' => $result->isValid(),
'error' => $result->getError(),
];
}
/**
* Validate collections and check compatibility in one call.
*
* @param array<string> $collections
* @return array{collections: array<string>, valid: bool, error: string|null}
*/
public function validateWithCompatibility(array $collections): array
{
$validated = $this->validate($collections);
if (empty($validated)) {
return [
'collections' => [],
'valid' => false,
'error' => 'Keine gültigen Collections ausgewählt',
];
}
$compatibility = $this->checkCompatibility($validated);
return [
'collections' => $validated,
'valid' => $compatibility['valid'],
'error' => $compatibility['error'],
];
}
}
Vollständig herunterladen
Aktionen
← Zurück zur Übersicht