Google Cloud Spanner C++ Client
A C++ Client Library for Google Cloud Spanner
database_admin_connection.h
Go to the documentation of this file.
1 // Copyright 2019 Google LLC
2 //
3 // Licensed under the Apache License, Version 2.0 (the "License");
4 // you may not use this file except in compliance with the License.
5 // You may obtain a copy of the License at
6 //
7 // http://www.apache.org/licenses/LICENSE-2.0
8 //
9 // Unless required by applicable law or agreed to in writing, software
10 // distributed under the License is distributed on an "AS IS" BASIS,
11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 // See the License for the specific language governing permissions and
13 // limitations under the License.
14 
15 #ifndef GOOGLE_CLOUD_CPP_GOOGLE_CLOUD_SPANNER_DATABASE_ADMIN_CONNECTION_H
16 #define GOOGLE_CLOUD_CPP_GOOGLE_CLOUD_SPANNER_DATABASE_ADMIN_CONNECTION_H
17 
22 #include "google/cloud/spanner/internal/database_admin_stub.h"
25 #include "google/cloud/internal/pagination_range.h"
26 #include <google/spanner/admin/database/v1/spanner_database_admin.grpc.pb.h>
27 #include <string>
28 #include <vector>
29 
30 namespace google {
31 namespace cloud {
32 namespace spanner {
33 inline namespace SPANNER_CLIENT_NS {
34 
44 using ListDatabaseRange = google::cloud::internal::PaginationRange<
45  google::spanner::admin::database::v1::Database,
46  google::spanner::admin::database::v1::ListDatabasesRequest,
47  google::spanner::admin::database::v1::ListDatabasesResponse>;
48 
58 using ListBackupOperationsRange = google::cloud::internal::PaginationRange<
59  google::longrunning::Operation,
60  google::spanner::admin::database::v1::ListBackupOperationsRequest,
61  google::spanner::admin::database::v1::ListBackupOperationsResponse>;
62 
72 using ListDatabaseOperationsRange = google::cloud::internal::PaginationRange<
73  google::longrunning::Operation,
74  google::spanner::admin::database::v1::ListDatabaseOperationsRequest,
75  google::spanner::admin::database::v1::ListDatabaseOperationsResponse>;
76 
86 using ListBackupsRange = google::cloud::internal::PaginationRange<
87  google::spanner::admin::database::v1::Backup,
88  google::spanner::admin::database::v1::ListBackupsRequest,
89  google::spanner::admin::database::v1::ListBackupsResponse>;
90 
103  public:
104  virtual ~DatabaseAdminConnection() = 0;
105 
107 
115  struct CreateDatabaseParams {
120  std::vector<std::string> extra_statements;
121  };
122 
127  };
128 
133  };
134 
140  std::vector<std::string> statements;
141  };
142 
147  };
148 
153  };
154 
159  };
160 
165  google::iam::v1::Policy policy;
166  };
167 
172  std::vector<std::string> permissions;
173  };
174 
179  std::string backup_id;
180  std::chrono::system_clock::time_point expire_time;
181  };
182 
186  std::string backup_full_name;
187  };
188 
192  std::string backup_full_name;
193  };
194 
199  std::string filter;
200  };
201 
207  std::string backup_full_name;
208  };
209 
212  google::spanner::admin::database::v1::UpdateBackupRequest request;
213  };
214 
219  std::string filter;
220  };
221 
226  std::string filter;
227  };
229 
232  virtual future<StatusOr<google::spanner::admin::database::v1::Database>>
233  CreateDatabase(CreateDatabaseParams) = 0;
234 
237  virtual StatusOr<google::spanner::admin::database::v1::Database> GetDatabase(
238  GetDatabaseParams) = 0;
239 
242  virtual StatusOr<google::spanner::admin::database::v1::GetDatabaseDdlResponse>
243  GetDatabaseDdl(GetDatabaseDdlParams) = 0;
244 
247  virtual future<
248  StatusOr<google::spanner::admin::database::v1::UpdateDatabaseDdlMetadata>>
249  UpdateDatabase(UpdateDatabaseParams) = 0;
250 
253  virtual Status DropDatabase(DropDatabaseParams) = 0;
254 
257  virtual ListDatabaseRange ListDatabases(ListDatabasesParams) = 0;
258 
261  virtual future<StatusOr<google::spanner::admin::database::v1::Database>>
262  RestoreDatabase(RestoreDatabaseParams);
263 
266  virtual StatusOr<google::iam::v1::Policy> GetIamPolicy(
267  GetIamPolicyParams) = 0;
268 
271  virtual StatusOr<google::iam::v1::Policy> SetIamPolicy(
272  SetIamPolicyParams) = 0;
273 
276  virtual StatusOr<google::iam::v1::TestIamPermissionsResponse>
277  TestIamPermissions(TestIamPermissionsParams) = 0;
278 
281  virtual future<StatusOr<google::spanner::admin::database::v1::Backup>>
282  CreateBackup(CreateBackupParams);
283 
285  virtual StatusOr<google::spanner::admin::database::v1::Backup> GetBackup(
287 
290  virtual Status DeleteBackup(DeleteBackupParams);
291 
294  virtual ListBackupsRange ListBackups(ListBackupsParams);
295 
298  virtual StatusOr<google::spanner::admin::database::v1::Backup> UpdateBackup(
300 
303  virtual ListBackupOperationsRange ListBackupOperations(
305 
308  virtual ListDatabaseOperationsRange ListDatabaseOperations(
310 };
311 
324 std::shared_ptr<DatabaseAdminConnection> MakeDatabaseAdminConnection(
325  ConnectionOptions const& options = ConnectionOptions());
326 
340 std::shared_ptr<DatabaseAdminConnection> MakeDatabaseAdminConnection(
341  ConnectionOptions const& options, std::unique_ptr<RetryPolicy> retry_policy,
342  std::unique_ptr<BackoffPolicy> backoff_policy,
343  std::unique_ptr<PollingPolicy> polling_policy);
344 
345 namespace internal {
347 std::shared_ptr<DatabaseAdminConnection> MakeDatabaseAdminConnection(
348  std::shared_ptr<internal::DatabaseAdminStub> stub,
349  std::unique_ptr<RetryPolicy> retry_policy,
350  std::unique_ptr<BackoffPolicy> backoff_policy,
351  std::unique_ptr<PollingPolicy> polling_policy);
352 } // namespace internal
353 
354 } // namespace SPANNER_CLIENT_NS
355 } // namespace spanner
356 } // namespace cloud
357 } // namespace google
358 
359 #endif // GOOGLE_CLOUD_CPP_GOOGLE_CLOUD_SPANNER_DATABASE_ADMIN_CONNECTION_H
google::cloud::internal::PaginationRange< google::spanner::admin::database::v1::Backup, google::spanner::admin::database::v1::ListBackupsRequest, google::spanner::admin::database::v1::ListBackupsResponse > ListBackupsRange
An input range to stream backups in Cloud Spanner instance.
google::cloud::internal::PaginationRange< google::longrunning::Operation, google::spanner::admin::database::v1::ListBackupOperationsRequest, google::spanner::admin::database::v1::ListBackupOperationsResponse > ListBackupOperationsRange
An input range to stream backup operations in Cloud Spanner instance.
std::vector< std::string > extra_statements
Any additional statements to execute after creating the database.
std::vector< std::string > statements
The DDL statements updating the database schema.
This class identifies a Cloud Spanner Instance.
Definition: instance.h:41
Contains all the Cloud Spanner C++ client types and functions.
google::cloud::ConnectionOptions< ConnectionOptionsTraits > ConnectionOptions
The options for Cloud Spanner connections.
#define SPANNER_CLIENT_NS
Definition: version.h:22
A connection to the Cloud Spanner instance administration service.
google::cloud::internal::PaginationRange< google::spanner::admin::database::v1::Database, google::spanner::admin::database::v1::ListDatabasesRequest, google::spanner::admin::database::v1::ListDatabasesResponse > ListDatabaseRange
An input range to stream all the databases in a Cloud Spanner instance.
This class identifies a Cloud Spanner Database.
Definition: database.h:43
google::cloud::internal::PaginationRange< google::longrunning::Operation, google::spanner::admin::database::v1::ListDatabaseOperationsRequest, google::spanner::admin::database::v1::ListDatabaseOperationsResponse > ListDatabaseOperationsRange
An input range to stream database operations in Cloud Spanner instance.
std::shared_ptr< DatabaseAdminConnection > MakeDatabaseAdminConnection(ConnectionOptions const &options)
Returns an DatabaseAdminConnection object that can be used for interacting with Cloud Spanner's admin...
google::spanner::admin::database::v1::UpdateBackupRequest request