/** * @param RequestInterface $request * @param Table $documentsTable * @param array $documents * @return array */ private function processAggregations(RequestInterface $request, Table $documentsTable, $documents) { $aggregations = []; $documentIds = $documents ? $this->extractDocumentIds($documents) : $this->getDocumentIds($documentsTable); $buckets = $this->aggregationResolver->resolve($request, $documentIds); $dataProvider = $this->dataProviderContainer->get($request->getIndex()); foreach ($buckets as $bucket) { $aggregationBuilder = $this->aggregationContainer->get($bucket->getType()); $aggregations[$bucket->getName()] = $aggregationBuilder->build($dataProvider, $request->getDimensions(), $bucket, $documentsTable); } return $aggregations; }