/** * Test set Azure values */ public function testSetAzureValues() { $values = array('PartitionKey' => 'partition1', 'RowKey' => '000001', 'Name' => 'Maarten', 'Age' => 25, 'Visible' => true); $target = new DynamicTableEntity(); $target->setAzureValues($values); $target->setAzurePropertyType('Age', 'Edm.Int32'); $this->assertEquals('partition1', $target->getPartitionKey()); $this->assertEquals('000001', $target->getRowKey()); $this->assertEquals('Maarten', $target->Name); $this->assertEquals(25, $target->Age); $this->assertEquals('Edm.Int32', $target->getAzurePropertyType('Age')); $this->assertEquals(true, $target->Visible); }
/** * Delete document. * * @param mixed $document Document ID or Document object. * @param array $options * @return void */ public function deleteDocument($collectionName, $documentId, $options = null) { if ($documentId instanceof \Zend\Cloud\DocumentService\Document) { $documentId = $documentId->getId(); } $documentId = $this->_validateDocumentId($documentId, $collectionName); try { $entity = new DynamicTableEntity($documentId[0], $documentId[1]); if (isset($options[self::VERIFY_ETAG])) { $entity->setEtag($options[self::VERIFY_ETAG]); } $this->_storageClient->deleteEntity($collectionName, $entity, isset($options[self::VERIFY_ETAG])); } catch (WindowsAzureException\ExceptionInterface $e) { if (strpos($e->getMessage(), "does not exist") === false) { throw new Exception\RuntimeException('Error on document deletion: ' . $e->getMessage(), $e->getCode(), $e); } } }
/** * Update entity by adding or updating properties * * @param string $tableName Table name * @param TableEntity $entity Entity to update * @param boolean $verifyEtag Verify etag of the entity (used for concurrency) * @param array $properties Properties to merge. All properties will be used when omitted. * @return null|TableEntity * @throws RuntimeException */ public function mergeEntity($tableName = '', TableEntity $entity = null, $verifyEtag = false, $properties = array()) { $mergeEntity = null; if (is_array($properties) && count($properties) > 0) { // Build a new object $mergeEntity = new DynamicTableEntity($entity->getPartitionKey(), $entity->getRowKey()); // Keep only values mentioned in $properties $azureValues = $entity->getAzureValues(); foreach ($azureValues as $value) { if (in_array($value->Name, $properties)) { $mergeEntity->setAzureProperty($value->Name, $value->Value, $value->Type); } } } else { $mergeEntity = $entity; } return $this->_changeEntity(Request::MERGE, $tableName, $mergeEntity, $verifyEtag); }