Ejemplo n.º 1
0
 /** 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;
     }
 }