Google Cloud Spanner C++ Client
A C++ Client Library for Google Cloud Spanner
database_admin_client.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_CLIENT_H
16 #define GOOGLE_CLOUD_CPP_GOOGLE_CLOUD_SPANNER_DATABASE_ADMIN_CLIENT_H
17 
24 #include "google/cloud/future.h"
25 #include "google/cloud/status_or.h"
26 #include <chrono>
27 
28 namespace google {
29 namespace cloud {
30 namespace spanner {
31 inline namespace SPANNER_CLIENT_NS {
32 
112  public:
113  explicit DatabaseAdminClient(
114  ConnectionOptions const& options = ConnectionOptions());
115 
144  future<StatusOr<google::spanner::admin::database::v1::Database>>
145  CreateDatabase(Database db, std::vector<std::string> extra_statements = {});
146 
157  StatusOr<google::spanner::admin::database::v1::Database> GetDatabase(
158  Database db);
159 
170  StatusOr<google::spanner::admin::database::v1::GetDatabaseDdlResponse>
171  GetDatabaseDdl(Database db);
172 
189  future<
190  StatusOr<google::spanner::admin::database::v1::UpdateDatabaseDdlMetadata>>
191  UpdateDatabase(Database db, std::vector<std::string> statements);
192 
202  Status DropDatabase(Database db);
203 
213  ListDatabaseRange ListDatabases(Instance in);
214 
230  future<StatusOr<google::spanner::admin::database::v1::Database>>
231  RestoreDatabase(Database db, Backup const& backup);
232 
245  future<StatusOr<google::spanner::admin::database::v1::Database>>
246  RestoreDatabase(Database db,
247  google::spanner::admin::database::v1::Backup const& backup);
248 
258  StatusOr<google::iam::v1::Policy> GetIamPolicy(Database db);
259 
278  StatusOr<google::iam::v1::Policy> SetIamPolicy(
279  Database db, google::iam::v1::Policy policy);
280 
309  StatusOr<google::iam::v1::Policy> SetIamPolicy(Database const& db,
310  IamUpdater const& updater);
311 
320  StatusOr<google::iam::v1::Policy> SetIamPolicy(
321  Database const& db, IamUpdater const& updater,
322  std::unique_ptr<TransactionRerunPolicy> rerun_policy,
323  std::unique_ptr<BackoffPolicy> backoff_policy);
324 
347  StatusOr<google::iam::v1::TestIamPermissionsResponse> TestIamPermissions(
348  Database db, std::vector<std::string> permissions);
349 
375  future<StatusOr<google::spanner::admin::database::v1::Backup>> CreateBackup(
376  Database db, std::string backup_id,
377  std::chrono::system_clock::time_point expire_time);
378 
389  StatusOr<google::spanner::admin::database::v1::Backup> GetBackup(
390  Backup const& backup);
391 
399  Status DeleteBackup(
400  google::spanner::admin::database::v1::Backup const& backup);
401 
412  Status DeleteBackup(Backup const& backup);
413 
432  ListBackupsRange ListBackups(Instance in, std::string filter = {});
433 
443  StatusOr<google::spanner::admin::database::v1::Backup> UpdateBackupExpireTime(
444  google::spanner::admin::database::v1::Backup const& backup,
445  std::chrono::system_clock::time_point const& expire_time);
446 
459  StatusOr<google::spanner::admin::database::v1::Backup> UpdateBackupExpireTime(
460  Backup const& backup,
461  std::chrono::system_clock::time_point const& expire_time);
462 
481  ListBackupOperationsRange ListBackupOperations(Instance in,
482  std::string filter = {});
483 
502  ListDatabaseOperationsRange ListDatabaseOperations(Instance in,
503  std::string filter = {});
504 
506  explicit DatabaseAdminClient(std::shared_ptr<DatabaseAdminConnection> c)
507  : conn_(std::move(c)) {}
508 
509  private:
510  std::shared_ptr<DatabaseAdminConnection> conn_;
511 };
512 
513 } // namespace SPANNER_CLIENT_NS
514 } // namespace spanner
515 } // namespace cloud
516 } // namespace google
517 
518 #endif // GOOGLE_CLOUD_CPP_GOOGLE_CLOUD_SPANNER_DATABASE_ADMIN_CLIENT_H
This class identifies a Cloud Spanner Backup.
Definition: backup.h:38
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.
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
DatabaseAdminClient(std::shared_ptr< DatabaseAdminConnection > c)
Create a new client with the given stub. For testing only.
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.
std::function< optional< google::iam::v1::Policy >(google::iam::v1::Policy)> IamUpdater
Definition: iam_updater.h:29
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.
Performs database administration operations on Spanner.