public function searchAction(ParamFetcher $paramFetcher)
{
$query = $paramFetcher->get('query');
$result = ['errors' => [], 'items' => []];
/** @var StorageFactory $storageFactory */
$storageFactory = $this->get('jarves.storage_factory');
$condition = new Condition();
$configs = $this->jarves->getConfigs()->getConfigs();
$objects = [];
foreach ($configs as $bundleConfig) {
if (!$bundleConfig->getObjects()) {
continue;
}
foreach ($bundleConfig->getObjects() as $object) {
if ('jarves/file' !== $object->getKey()) {
$objects[] = $object;
}
}
}
$objects[] = $this->jarves->getConfigs()->getObject('jarves/file');
foreach ($objects as $object) {
/** @var AbstractStorage $storage */
$storage = $storageFactory->createStorage($object);
try {
if ($searchResult = $storage->search($query, clone $condition)) {
$result['items'][$object->getKey()] = $searchResult;
}
} catch (\Exception $e) {
$result['errors'][$object->getKey()] = get_class($e) . ': ' . $e->getMessage();
}
}
return $result;
}