/** * Data provider for testIteration. * * @return array */ public function getIterationData() { $out = []; // Case #0: no search type set, with a sort, results should be sorted. $search = new Search(); $search->setSize(2); $search->setScroll('1m'); $search->addSort(new Sort('header')); $search->addQuery(new MatchAllQuery()); $out[] = ['search' => $search, true]; // Case #1: search type set to scan, with a sort, results should not be sorted. $search = new Search(); $search->setSize(2); $search->setScroll('1m'); $search->setSearchType('scan'); $search->addSort(new Sort('header')); $search->addQuery(new MatchAllQuery()); $out[] = ['search' => $search, false]; // Case #3: minimum size, should give the same results. $search = new Search(); $search->setSize(1); $search->setScroll('1m'); $search->addSort(new Sort('header')); $search->addQuery(new MatchAllQuery()); $out[] = ['search' => $search, true]; return $out; }
/** * {@inheritdoc} */ public function getAction(RestRequest $restRequest, $id = null) { if ($id !== null) { $data = $restRequest->getRepository()->find($id, Repository::RESULTS_ARRAY); if ($data === null) { return $this->renderRest(null, Response::HTTP_NOT_FOUND); } } else { $search = new Search(); !$restRequest->query->has('from') ?: $search->setFrom($restRequest->query->get('from')); !$restRequest->query->has('size') ?: $search->setSize($restRequest->query->get('size')); $data = $restRequest->getRepository()->execute($search, Repository::RESULTS_ARRAY); } return $this->renderRest($data); }
/** * {@inheritdoc} */ public function modifySearch(Search $search, FilterState $state = null, SearchRequest $request = null) { if ($state && $state->isActive()) { $search->setFrom($this->countPerPage * ($state->getValue() - 1)); } $search->setSize($this->countPerPage); }