Skip to content

Commit 0d8f29d

Browse files
feat(Spanner): add sample for update database (GoogleCloudPlatform#1793)
1 parent 384a0f0 commit 0d8f29d

File tree

3 files changed

+84
-1
lines changed

3 files changed

+84
-1
lines changed

spanner/composer.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
{
22
"require": {
3-
"google/cloud-spanner": "^1.54.0"
3+
"google/cloud-spanner": "^1.62.1"
44
}
55
}

spanner/src/update_database.php

Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
<?php
2+
/**
3+
* Copyright 2023 Google Inc.
4+
*
5+
* Licensed under the Apache License, Version 2.0 (the "License");
6+
* you may not use this file except in compliance with the License.
7+
* You may obtain a copy of the License at
8+
*
9+
* http://www.apache.org/licenses/LICENSE-2.0
10+
*
11+
* Unless required by applicable law or agreed to in writing, software
12+
* distributed under the License is distributed on an "AS IS" BASIS,
13+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14+
* See the License for the specific language governing permissions and
15+
* limitations under the License.
16+
*/
17+
18+
/**
19+
* For instructions on how to run the full sample:
20+
*
21+
* @see https://github.com/GoogleCloudPlatform/php-docs-samples/tree/main/spanner/README.md
22+
*/
23+
24+
namespace Google\Cloud\Samples\Spanner;
25+
26+
// [START spanner_update_database]
27+
use Google\Cloud\Spanner\SpannerClient;
28+
29+
/**
30+
* Updates the drop protection setting for a database.
31+
* Example:
32+
* ```
33+
* update_database($instanceId, $databaseId);
34+
* ```
35+
*
36+
* @param string $instanceId The Spanner instance ID.
37+
* @param string $databaseId The Spanner database ID.
38+
*/
39+
function update_database(string $instanceId, string $databaseId): void
40+
{
41+
$spanner = new SpannerClient();
42+
$instance = $spanner->instance($instanceId);
43+
$database = $instance->database($databaseId);
44+
printf(
45+
'Updating database %s',
46+
$database->name(),
47+
);
48+
$op = $database->updateDatabase(['enableDropProtection' => true]);
49+
$op->pollUntilComplete();
50+
$database->reload();
51+
printf(
52+
'Updated the drop protection for %s to %s' . PHP_EOL,
53+
$database->name(),
54+
$database->info()['enableDropProtection']
55+
);
56+
}
57+
// [END spanner_update_database]
58+
59+
// The following 2 lines are only needed to run the samples
60+
require_once __DIR__ . '/../../testing/sample_helpers.php';
61+
\Google\Cloud\Samples\execute_sample(__FILE__, __NAMESPACE__, $argv);

spanner/test/spannerTest.php

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -239,6 +239,28 @@ public function testCreateDatabaseWithEncryptionKey()
239239
$this->assertStringContainsString('Created database en-test-', $output);
240240
}
241241

242+
/**
243+
* @depends testCreateDatabase
244+
*/
245+
public function testUpdateDatabase()
246+
{
247+
$output = $this->runFunctionSnippet('update_database', [
248+
'instanceId' => self::$instanceId,
249+
'databaseId' => self::$databaseId
250+
]);
251+
$this->assertStringContainsString(self::$databaseId, $output);
252+
$this->assertStringContainsString(true, $output);
253+
254+
// reset the enableDropProtection for test tear down
255+
$spanner = new SpannerClient();
256+
$instance = $spanner->instance(self::$instanceId);
257+
$database = $instance->database(self::$databaseId);
258+
$op = $database->updateDatabase(['enableDropProtection' => false]);
259+
$op->pollUntilComplete();
260+
$database->reload();
261+
$this->assertFalse($database->info()['enableDropProtection']);
262+
}
263+
242264
/**
243265
* @depends testCreateDatabase
244266
*/

0 commit comments

Comments
 (0)