public function getCounter($key) { $response = $this->client->GetItem(['TableName' => 'tr_counters', 'Key' => ['counter_key' => ['S' => $key]]]); if (isset($response['Item'])) { $counter = $this->marshaler->unmarshalItem($response['Item']); return $counter['v']; } return null; }
protected function populateArray($rawItems) { $marshaler = new Marshaler(); $items = array(); foreach ($rawItems as $rawItem) { array_push($items, $this->createObject($marshaler->unmarshalItem($rawItem))); } return $items; }
protected function formatResults(\Aws\Result $result) { $items = new \ArrayIterator(); if ($result['Count'] === 0) { return $items; } foreach ($result['Items'] as $item) { $items[] = $this->marshaler->unmarshalItem($item); } return $items; }
public function updateItem($tableName, array $key, $updateExpression, $expressionValuesMap = null) { $marshaler = new Marshaler(); $params = array('TableName' => $this->getRealEnvName($tableName), 'Key' => $marshaler->marshalItem($key), 'ReturnValues' => 'UPDATED_NEW'); $params['UpdateExpression'] = $updateExpression; if (empty($expressionValuesMap) === false) { $params['ExpressionAttributeValues'] = $expressionValuesMap; } $result = $this->client->updateItem($params); if (isset($result['Attributes']) === true) { return $marshaler->unmarshalItem($result['Attributes']); } else { return null; } }
/** * Get Item data * * @param $id * @return array|bool|stdClass */ public function getData($id) { if (empty($this->table)) { return false; } /** * Get item */ $result = $this->client->getItem(['TableName' => $this->table, 'Key' => ['id' => ['S' => $id]]]); /** * Un Marshal Item */ $marshaler = new Marshaler(); $data = $marshaler->unmarshalItem($result['Item']); return $data; }
public function unmarshalItem($item) { return $this->marshaler->unmarshalItem($item); }
/** * Session read handler. * Do not call this method directly. * @param string $id session ID * @return string the session data */ public function readSession($id) { $marshaler = new Marshaler(); $keys = []; $keys[$this->idColumn] = $id; try { $result = $this->getClient()->getItem(['TableName' => $this->tableName, 'Key' => $marshaler->marshalItem($keys)]); if (!isset($result['Item'])) { return ''; } $values = $marshaler->unmarshalItem($result['Item']); if (!isset($values[$this->dataColumn])) { return ''; } return $values[$this->dataColumn]; } catch (\Exception $ex) { Yii::error(__CLASS__ . '::' . __METHOD__ . ': ' . $ex->getMessage(), 'yii2dynamodbsession'); return false; } }
/** * Gets raw stats for specified run * @param $runId * @return array|null|\stdClass */ private function getDocumentForRunIdFromDynamoDb($runId) { $tableName = $this->container->getParameter('container_stats_dynamodb.table_name'); $params = ['TableName' => $tableName, 'KeyConditionExpression' => 'runId = :runId', 'ExpressionAttributeValues' => [':runId' => ['S' => strval($runId)]], 'ConsistentRead' => true, 'Limit' => 1]; /** @var DynamoDbClient $dynamoDbClient */ $dynamoDbClient = $this->container->get('queue.dynamodb_client'); $marshaler = new Marshaler(); $response = $dynamoDbClient->query($params); if (!empty($response['Items'])) { return $marshaler->unmarshalItem(reset($response['Items'])); } else { return null; } }
/** * Gets raw stats for specified project and date range * @param $projectId * @param $dateFrom * @param $dateTo * @return array */ private function getRawMetricsByProjectIdAndDateRange($projectId, $dateFrom, $dateTo) { $tableName = $this->container->getParameter('container_stats_dynamodb.table_name'); $params = ['TableName' => $tableName, 'IndexName' => 'sapiProjectId-sapiCreatedTime-index', 'KeyConditionExpression' => <<<EXPR sapiProjectId = :sapiProjectId and (sapiCreatedTime between :dateFrom and :dateTo) EXPR , 'ExpressionAttributeValues' => [':sapiProjectId' => ['S' => strval($projectId)], ':dateFrom' => ['S' => date('c', strtotime($dateFrom . ' 00:00:00'))], ':dateTo' => ['S' => date('c', strtotime($dateTo . ' 23:59:59'))]], 'Limit' => 100]; /** @var DynamoDbClient $dynamoDbClient */ $dynamoDbClient = $this->container->get('queue.dynamodb_client'); $documents = []; $marshaler = new Marshaler(); do { if (isset($response) && isset($response['LastEvaluatedKey'])) { $params['ExclusiveStartKey'] = $response['LastEvaluatedKey']; } $response = $dynamoDbClient->query($params); foreach ($response['Items'] as $item) { $documents[] = $marshaler->unmarshalItem($item); } } while (isset($response['LastEvaluatedKey'])); return $documents; }