/** Insert new record */ function save($member = '') { $dynamodb = new AmazonDynamoDB(); if ($member != '') { if (!isset($member['id'])) { // new record $id = time() . rand(0, 100); $dynamodb->batch($queue)->put_item(array('TableName' => $this->tableName, 'Item' => array($this->primaryKey => array(AmazonDynamoDB::TYPE_NUMBER => $id), 'date' => array(AmazonDynamoDB::TYPE_NUMBER => (string) $member['date']), 'name' => array(AmazonDynamoDB::TYPE_STRING => $member['name']), 'address' => array(AmazonDynamoDB::TYPE_STRING => $member['address']), 'phone' => array(AmazonDynamoDB::TYPE_STRING => $member['phone'])))); // Execute the batch of requests in parallel if you wish $responses = $dynamodb->batch($queue)->send(); if ($responses[0]->status == '200') { return $id; } else { print_r($responses); } } else { // edit existing record $id = $member['id']; $response = $dynamodb->update_item(array('TableName' => $this->tableName, 'Key' => array('HashKeyElement' => array(AmazonDynamoDB::TYPE_NUMBER => $id)), 'AttributeUpdates' => array('date' => array('Action' => AmazonDynamoDB::ACTION_PUT, 'Value' => array(AmazonDynamoDB::TYPE_NUMBER => (string) $member['date'])), 'name' => array('Action' => AmazonDynamoDB::ACTION_PUT, 'Value' => array(AmazonDynamoDB::TYPE_STRING => $member['name'])), 'address' => array('Action' => AmazonDynamoDB::ACTION_PUT, 'Value' => array(AmazonDynamoDB::TYPE_STRING => $member['address'])), 'phone' => array('Action' => AmazonDynamoDB::ACTION_PUT, 'Value' => array(AmazonDynamoDB::TYPE_STRING => $member['phone']))))); if ($response->status == '200') { return $id; } else { print_r($responses); } } } }
/** * Attempts to lock the specified field * if it is a 0. Returns the the old value and previous * timestamp on success, FALSE if the lock can't be obtained * * @param mixed $id * @param mixed $field * @param mixed $lock * @param mixed $force * @return mixed */ function lock_lock($id, $field = 'lock', $lock = true, $force = false) { $r = new ddbRequest($this->TableName); if ($lock) { $expected_value = 0; $new_value = 1; } else { $expected_value = 1; $new_value = 0; } $r->setKey($id); $r->setReturnValues(AmazonDynamoDB::RETURN_UPDATED_OLD); if (!$force) { $r->setExpected(array($field => $expected_value)); } $r->setUpdates(array($field => $new_value, $field . '_ts' => time()), AmazonDynamoDB::ACTION_PUT); $params = $r->getParams(); $this->response = $this->dynamodb->update_item($params); $status = $this->response->status; if ($status == '200') { return ddbUtil::parse_item($this->response->body); } else { return false; } }