/**
  * @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;
 }