public function fromBigQuery(array $value, array $schema)
{
$value = $value['v'];
if (isset($schema['mode'])) {
if ($schema['mode'] === 'REPEATED') {
return $this->repeatedValueFromBigQuery($value, $schema);
}
if ($schema['mode'] === 'NULLABLE' && $value === null) {
return $value;
}
}
switch ($schema['type']) {
case self::TYPE_BOOLEAN:
return $value === 'true' ? true : false;
case self::TYPE_INTEGER:
return $this->returnInt64AsObject ? new Int64($value) : (int) $value;
case self::TYPE_FLOAT:
return (double) $value;
case self::TYPE_STRING:
return (string) $value;
case self::TYPE_BYTES:
return new Bytes(base64_decode($value));
case self::TYPE_DATE:
return new Date(new \DateTime($value));
case self::TYPE_DATETIME:
return new \DateTime($value);
case self::TYPE_TIME:
return new Time(new \DateTime($value));
case self::TYPE_TIMESTAMP:
$timestamp = new \DateTime();
$timestamp->setTimestamp((double) $value);
return new Timestamp($timestamp);
case self::TYPE_RECORD:
return $this->recordFromBigQuery($value, $schema['fields']);
default:
throw new \InvalidArgumentException(sprintf('Unrecognized value type %s. Please ensure you are using the latest version of google/cloud.', $schema['type']));
break;
}
}