/** * @param SelectQueryParameters $queryBuilder * @return SelectQueryParameters */ public function build(SelectQueryParameters $queryBuilder = null) { if (!isset($queryBuilder)) { $queryBuilder = new SelectQueryParameters(); } if ($this->records) { $queryBuilder->limit(new LimitParameter($this->records)); } if (isset($this->after)) { $where = $this->processCursor($this->after, self::REQUEST_PARAM_AFTER); $queryBuilder->where($where); } if (isset($this->before)) { $this->invertOrder = true; $where = $this->processCursor($this->before, self::REQUEST_PARAM_BEFORE); $queryBuilder->where($where); } foreach ($this->sort as $sort) { $dir = $sort->getDirection(); if ($this->invertOrder) { $dir = OrderParameter::invertDirection($dir); } $queryBuilder->orderBy(new OrderParameter($sort->getColumn(), $dir)); } $queryBuilder->reverse($this->invertOrder); return $queryBuilder; }