Skip to content

Instantly share code, notes, and snippets.

@LeonanCarvalho
Created August 31, 2016 12:49
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save LeonanCarvalho/1d64f67576c9c546afb470b9fbac74c4 to your computer and use it in GitHub Desktop.
Save LeonanCarvalho/1d64f67576c9c546afb470b9fbac74c4 to your computer and use it in GitHub Desktop.
<?php
/**
* Description of ResultSet:
* This class handler a paginated Cassandra\FutureRows
*
* @author Leonan Carvalho
*/
class ResultSet {
/**
*
* @var Cassandra\FutureRows
*/
private $_future;
public function __construct(\Cassandra\FutureRows $future) {
$this->_future = $future;
}
public function count(){
return $this->_future->get()->count();
}
public function fetchAll() {
$rows = $this->_future->get();
$ret = [];
while (true) {
foreach ($rows as $key => $row) {
foreach ($row as &$data) {
switch (true) {
case $data instanceof \Cassandra\Blob :
$data = $data->toBinaryString();
break;
case $data instanceof \Cassandra\Map:
$data = array_combine($data->keys(), $data->values());
break;
case $data instanceof \Cassandra\Inet:
$data = $data->address();
break;
case $data instanceof Cassandra\UserTypeValue:
$data = $data->values();
break;
case $data instanceof \Cassandra\Varint:
case $data instanceof \Cassandra\Float:
case $data instanceof \Cassandra\Bigint:
case $data instanceof \Cassandra\Decimal:
case $data instanceof \Cassandra\Tinyint:
case $data instanceof \Cassandra\Smallint:
$data = $data->value();
break;
case $data instanceof \Cassandra\Date:
case $data instanceof \Cassandra\Timestamp:
$data = $data->toDateTime()->format(\DateTime::ATOM);
break;
case $data instanceof \Cassandra\Uuid:
case $data instanceof \Cassandra\Time:
$data = $data->__toString();
break;
default:
break;
}
}
$ret[] = $row;
}
if ($rows->isLastPage()) {
break;
}
$rows = $rows->nextPage();
}
return $ret;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment