1+ /*
2+ * Copyright 2017 Google Inc. All Rights Reserved.
3+ *
4+ * Licensed under the Apache License, Version 2.0 (the "License");
5+ * you may not use this file except in compliance with the License.
6+ * You may obtain a copy of the License at
7+ *
8+ * http://www.apache.org/licenses/LICENSE-2.0
9+ *
10+ * Unless required by applicable law or agreed to in writing, software
11+ * distributed under the License is distributed on an "AS IS" BASIS,
12+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+ * See the License for the specific language governing permissions and
14+ * limitations under the License.
15+ */
16+
17+ package com .google .cloud .examples .spanner .snippets ;
18+
19+ import com .google .api .gax .paging .Page ;
20+ import com .google .cloud .spanner .Options .ListOption ;
21+ import com .google .spanner .admin .database .v1 .CreateDatabaseMetadata ;
22+ import com .google .spanner .admin .database .v1 .UpdateDatabaseDdlMetadata ;
23+ import java .util .List ;
24+ import javax .annotation .Nullable ;
25+
26+ /**
27+ * This class contains snippets for {@link DatabaseAdminClient} interface.
28+ */
29+ public interface DatabaseAdminClientSnippets {
30+
31+ private final DatabaseAdminClient dbAdminClient ;
32+
33+ public DatabaseAdminClientSnippets (DatabaseAdminClient dbAdminClient ) {
34+ this .dbAdminClient = dbAdminClient ;
35+ }
36+
37+ /**
38+ * Example to create database.
39+ */
40+ // [TARGET createDatabase(String, String, Iterable)]
41+ // [VARIABLE my_instance_id]
42+ // [VARIABLE my_database_id]
43+ public void createDatabase (String instanceId , String databaseId ) {
44+ // [START createDatabase]
45+ Operation <Database , CreateDatabaseMetadata > op = dbAdminClient
46+ .createDatabase (
47+ instanceId ,
48+ databaseId ,
49+ Arrays .asList (
50+ "CREATE TABLE Singers (\n "
51+ + " SingerId INT64 NOT NULL,\n "
52+ + " FirstName STRING(1024),\n "
53+ + " LastName STRING(1024),\n "
54+ + " SingerInfo BYTES(MAX)\n "
55+ + ") PRIMARY KEY (SingerId)" ,
56+ "CREATE TABLE Albums (\n "
57+ + " SingerId INT64 NOT NULL,\n "
58+ + " AlbumId INT64 NOT NULL,\n "
59+ + " AlbumTitle STRING(MAX)\n "
60+ + ") PRIMARY KEY (SingerId, AlbumId),\n "
61+ + " INTERLEAVE IN PARENT Singers ON DELETE CASCADE" ));
62+ Database db = op .waitFor ().getResult ();
63+ System .out .println ("Created database [" + db .getId () + "]" );
64+ // [END createDatabase]
65+ }
66+
67+ /**
68+ * Example to getDatabase.
69+ */
70+ // [TARGET getDatabase(String, String)]
71+ // [VARIABLE my_instance_id]
72+ // [VARIABLE my_database_id]
73+ public void getDatabase (String instanceId , String databaseId ) {
74+ // [START getDatabase]
75+ Database db = dbClient .getDatabase (instanceId , databaseId );
76+ System .out .println ("Fetched database [" + db .getId () + "]" );
77+ // [END getDatabase]
78+ }
79+
80+ /**
81+ * Example to update the database DDL.
82+ */
83+ // [TARGET updateDatabaseDdl(String, String, Iterable, String)]
84+ // [VARIABLE my_instance_id]
85+ // [VARIABLE my_database_id]
86+ public void updateDatabaseDdl (String instanceId , String databaseId ) {
87+ // [START updateDatabaseDdl]
88+ dbAdminClient .updateDatabaseDdl (instanceId ,
89+ databaseId ,
90+ Arrays .asList ("ALTER TABLE Albums ADD COLUMN MarketingBudget INT64" ),
91+ null ).waitFor ();
92+ System .out .println ("UpdateDatabaseDdl: added MarketingBudget column" );
93+ // [END updateDatabaseDdl]
94+ }
95+
96+ /**
97+ * Example to drop a Cloud Spanner database.
98+ */
99+ // [TARGET dropDatabase(String, String)]
100+ // [VARIABLE my_instance_id]
101+ // [VARIABLE my_database_id]
102+ public void dropDatabase (String instanceId , String databaseId ) {
103+ // [START dropDatabase]
104+ dbAdminClient .dropDatabase (instanceId , databaseId );
105+ System .out .println ("DropDatabase: " + databaseId );
106+ // [END dropDatabase]
107+ }
108+
109+ /**
110+ * Example to get the schema of a Cloud Spanner database.
111+ */
112+ // [TARGET getDatabaseDdl(instanceId, databaseId)]
113+ // [VARIABLE my_instance_id]
114+ // [VARIABLE my_database_id]
115+ public void getDatabaseDdl (String instanceId , String databaseId ) {
116+ // [START getDatabaseDdl]
117+ List <String > statementsInDb = dbAdminClient .getDatabaseDdl (instanceId , databaseId );
118+ // [END getDatabaseDdl]
119+ }
120+
121+ /**
122+ * Example to get the list of Cloud Spanner database in the given instance.
123+ */
124+ // [TARGET listDatabases(String, ListOption)]
125+ // [VARIABLE my_instance_id]
126+ public void listDatabases (String instanceId ) {
127+ // [START listDatabases]
128+ Page <Database > page = dbAdminClient .listDatabases (instanceId , Options .pageSize (1 ));
129+ while (page != null ) {
130+ Database db = Iterables .getOnlyElement (page .getValues ());
131+ System .out .println (db .getId ().getDatabase ());
132+ page = page .getNextPage ();
133+ }
134+ // [END listDatabases]
135+ }
136+ }
0 commit comments