public function grammarCount(Cursor $cursor, $foundOnly, array &$data = array())
 {
     $sql = "FROM {$cursor->getCollection()->getName()}";
     $wheres = array();
     foreach ($cursor->getCriteria() as $key => $value) {
         $wheres[] = $this->collection->connection->getDialect()->grammarExpression($key, $value, $data);
     }
     if (count($wheres)) {
         $sql .= ' WHERE ' . implode(' AND ', $wheres);
     }
     if ($foundOnly) {
         $sorts = $cursor->sort();
         $limit = $cursor->limit();
         $skip = $cursor->skip();
         if (isset($sorts)) {
             throw new Exception(__FILE__ . ':' . __LINE__ . ' unimplemented yet!');
         }
         if (isset($limit) || isset($skip)) {
             $sql .= ' LIMIT ' . ($limit ?: -1) . ' OFFSET ' . ($skip ?: 0);
         }
         $sql = 'SELECT COUNT(*) AS c FROM (SELECT * ' . $sql . ')';
     } else {
         $sql = 'SELECT COUNT(*) AS c ' . $sql;
     }
     return $sql;
 }
 /**
  * Get data from rest service.
  *
  * @param \Norm\Cursor $cursor
  *
  * @throws \Exception
  *
  * @return array
  */
 public function restGet($cursor)
 {
     if ($cursor instanceof Cursor) {
         $name = $cursor->getCollection()->getName();
         $criteria = $cursor->getCriteria();
         $limit = $cursor->limit();
         $skip = $cursor->skip();
         $sorts = $cursor->sort();
         $query = array();
         foreach ($criteria as $key => $value) {
             $query[$key] = $value;
         }
         if ($limit) {
             $query['!limit'] = $limit;
         }
         if ($skip) {
             $query['!skip'] = $skip;
         }
         if (!empty($sorts)) {
             foreach ($sorts as $key => $value) {
                 $query["!sort[{$key}]"] = $value;
             }
         }
         $qs = array();
         foreach ($query as $key => $value) {
             if (is_array($value)) {
                 foreach ($value as $k => $v) {
                     $qs[] = '!' . $key . '=' . $v;
                 }
             } else {
                 $qs[] = $key . '=' . $value;
             }
         }
         if ($qs) {
             $qs = '?' . implode('&', $qs);
         } else {
             $qs = '';
         }
         $url = $this->option('baseUrl') . '/' . $name . '.json' . $qs;
         $client = new Client();
         $response = $client->get($url)->send();
         return json_decode($response->getBody(true), true);
     } else {
         throw new Exception('Unimplemented yet!');
     }
 }