-
Notifications
You must be signed in to change notification settings - Fork 14
/
kv-crud.php
110 lines (94 loc) · 3.81 KB
/
kv-crud.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
<?php
use \Couchbase\ClusterOptions;
use \Couchbase\Cluster;
use \Couchbase\InsertOptions;
use \Couchbase\ReplaceOptions;
use \Couchbase\UpsertOptions;
use \Couchbase\GetOptions;
use \Couchbase\RemoveOptions;
use \Couchbase\DurabilityLevel;
$opts = new ClusterOptions();
$opts->credentials("Administrator", "password");
$cluster = new Cluster("couchbase://localhost", $opts);
$bucket = $cluster->bucket("travel-sample");
$collection = $bucket->defaultCollection();
// tag::insert[]
$document = ["foo" => "bar", "bar" => "foo"];
$res = $collection->insert("document-key-new", $document);
printf("document \"document-key-new\" has been created with CAS \"%s\"\n", $res->cas());
// end::insert[]
// Insert document with options
// tag::insertwithoptions[]
$document = ["foo" => "bar", "bar" => "foo"];
$opts = new InsertOptions();
$opts->timeout(300000 /* milliseconds */);
$res = $collection->insert("document-key", $document, $opts);
printf("document \"document-key\" has been created with CAS \"%s\"\n", $res->cas());
// end::insertwithoptions[]
// tag::replacewithcas[]
// Replace document with incorrect CAS
$opts = new ReplaceOptions();
$opts->timeout(300000 /* milliseconds */);
$invalidCas = "776t3gAAAAA=";
$opts->cas($invalidCas);
try {
$collection->replace("document-key", $document, $opts);
} catch (\Couchbase\CasMismatchException $ex) {
printf("document \"document-key\" cannot be replaced with CAS \"%s\"\n", $invalidCas);
}
// Get and Replace document with CAS
$res = $collection->get("document-key");
$doc = $res->content();
$doc["bar"] = "moo";
$opts = new ReplaceOptions();
$oldCas = $res->cas();
$opts->cas($oldCas);
$res = $collection->replace("document-key", $doc, $opts);
printf("document \"document-key\" \"%s\" been replaced successfully. New CAS \"%s\"\n", $oldCas, $res->cas());
// end::replacewithcas[]
// tag::removewithoptions[]
$opts = new RemoveOptions();
$opts->timeout(5000); // 5 seconds
$result = $collection->remove("document-key", $opts);
printf("document \"document-key\" \"%s\" been removed successfully.\n", $res->cas());
// end::removewithoptions[]
// tag::upsertwithexpiry[]
$document = ["foo" => "bar", "bar" => "foo"];
$opts = new UpsertOptions();
$opts->expiry(60 * 1000 /* 60 seconds */);
$res = $collection->upsert("document-key", $document, $opts);
printf("document \"document-key\" has been created with CAS \"%s\"\n", $res->cas());
// end::upsertwithexpiry[]
// Get
// tag::get[]
$res = $collection->get("document-key");
$doc = $res->content();
printf("document \"document-key\" has content: \"%s\" CAS \"%s\"\n", json_encode($doc), $res->cas());
// end::get[]
// tag::getwithoptions[]
$opts = new GetOptions();
$opts->timeout(3000 /* milliseconds */);
$res = $collection->get("document-key", $opts);
$doc = $res->content();
printf("document \"document-key\" has content: \"%s\" CAS \"%s\"\n", json_encode($doc), $res->cas());
// end::getwithoptions[]
// tag::upsertwithdurability[]
// Upsert with Durability
$opts = new UpsertOptions();
$opts->timeout(3000 /* milliseconds */);
$opts->durabilityLevel(DurabilityLevel::MAJORITY);
$res = $collection->upsert("document-key2", $opts);
printf("document \"document-key2\" has been created with CAS \"%s\"\n", $res->cas());
// end::upsertwithdurability[]
// tag::namedcollectionupsert[]
$document = ["name" => "John Doe", "preferred_email" => "johndoe111@test123.test"];
$opts = new UpsertOptions();
$agentScope = $bucket->scope("tenant_agent_00");
$usersCollection = $agentScope->collection("users");
$res = $usersCollection->upsert("user-key", $document, $opts);
printf("document \"user-key\" has been created with CAS \"%s\"\n", $res->cas());
// end::namedcollectionupsert[]
// Cleanup example data to avoid errors when running locally (mainly for inserts).
$opts = new RemoveOptions();
$collection->remove("document-key-new", $opts);
$collection->remove("document-key", $opts);