AzureのCosmosDBを使ったあれこれを作る過程で、CosmosDBのRESTAPIを叩くPHPライブラリが必要になったので作りました。
あんまり特別なことはしていないくて、ほんとにただRest APIをラップしたものです。
インストール
composer.jsonにarakaki-yuji/cosmosdb-clientを追加してください。
{ "require": { "arakaki-yuji/cosmosdb-client": "^0.0.5" } }
使い方
初期化
$client = new \CosmosdbClient\CosmosdbClient($cosmosdbSecretKey, $cosmosdbAccountName);
Databaseの操作
// create database $client->database->create('database_id'); // list database $client->database->list(); // get database $client->database->get('database_id'); // delete database $client->database->delete('database_id');
Collectionの操作
// create collection $indexingPolicy = ['indexingMode' => 'lazy']; $partitionKey = ['paths' => ['/Name']]; $client->collection->create('database_id', 'collection_id', $indexingPolicy, $partitionKey); // list collection $client->collection->list('database_id'); // get collection $client->collection->get('database_id', 'collection_id'); // replace/update collection $client->collection->replace('database_id', 'collection_id', $indexingPolicy, $partitionKey); // delete collection $client->collection->delete('database_id', 'collection_id');
Documentの操作
// create document
$doc = [
'id' => 1,
'name' => 'Yuji Arakaki',
'email' => 'example@test.com'
];
$partitionKeyValue = $doc['name'];
$client->document->create('database_id', 'collection_id', $doc, $partitionKeyValue);
// list document
$client->document->list('database_id', 'collection_id');
// get document
$client->document->get('database_id', 'collection_id', $doc['id'], $partitionKeyValue);
// replace/update document
$client->document->replace('database_id', 'collection_id', $doc, $partitionKeyValue);
// query document
$query = "SELECT * FROM c WHERE c.name = @name";
$parameters = [['name' => '@name', 'value' => 'Yuji Arakaki']];
$client->document->query('database_id', 'collection_id', $query, $parameters);
// delete document
$client->document->delete('database_id', 'collection_id', $doc['id'], $partitionKeyValue);
良いデザインかどうかはさておき、APIのラッパーは筋力さえあれば誰でも作れる。