Google Cloud Spanner C++ Client
A C++ Client Library for Google Cloud Spanner
create_instance_request_builder.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_CREATE_INSTANCE_REQUEST_BUILDER_H
16 #define GOOGLE_CLOUD_CPP_GOOGLE_CLOUD_SPANNER_CREATE_INSTANCE_REQUEST_BUILDER_H
17 
20 #include <google/spanner/admin/instance/v1/spanner_instance_admin.pb.h>
21 #include <map>
22 
23 namespace google {
24 namespace cloud {
25 namespace spanner {
26 inline namespace SPANNER_CLIENT_NS {
27 
39  public:
40  // Copy and move.
44  default;
46  default;
47 
52  CreateInstanceRequestBuilder(Instance const& in, std::string config) {
53  request_.set_parent("projects/" + in.project_id());
54  request_.set_instance_id(in.instance_id());
55  request_.mutable_instance()->set_name(in.FullName());
56  request_.mutable_instance()->set_display_name(in.instance_id());
57  request_.mutable_instance()->set_node_count(1);
58  request_.mutable_instance()->set_config(std::move(config));
59  }
60 
61  CreateInstanceRequestBuilder& SetDisplayName(std::string display_name) & {
62  request_.mutable_instance()->set_display_name(std::move(display_name));
63  return *this;
64  }
65 
66  CreateInstanceRequestBuilder&& SetDisplayName(std::string display_name) && {
67  request_.mutable_instance()->set_display_name(std::move(display_name));
68  return std::move(*this);
69  }
70 
72  request_.mutable_instance()->set_node_count(node_count);
73  return *this;
74  }
75 
77  request_.mutable_instance()->set_node_count(node_count);
78  return std::move(*this);
79  }
80 
82  std::map<std::string, std::string> const& labels) & {
83  for (auto const& pair : labels) {
84  request_.mutable_instance()->mutable_labels()->insert(
85  {pair.first, pair.second});
86  }
87  return *this;
88  }
89 
91  std::map<std::string, std::string> const& labels) && {
92  for (auto const& pair : labels) {
93  request_.mutable_instance()->mutable_labels()->insert(
94  {pair.first, pair.second});
95  }
96  return std::move(*this);
97  }
98 
99  google::spanner::admin::instance::v1::CreateInstanceRequest& Build() & {
100  return request_;
101  }
102  google::spanner::admin::instance::v1::CreateInstanceRequest&& Build() && {
103  return std::move(request_);
104  }
105 
106  private:
107  google::spanner::admin::instance::v1::CreateInstanceRequest request_;
108 };
109 
110 } // namespace SPANNER_CLIENT_NS
111 } // namespace spanner
112 } // namespace cloud
113 } // namespace google
114 
115 #endif // GOOGLE_CLOUD_CPP_GOOGLE_CLOUD_SPANNER_CREATE_INSTANCE_REQUEST_BUILDER_H
CreateInstanceRequestBuilder & SetDisplayName(std::string display_name) &
CreateInstanceRequestBuilder & SetLabels(std::map< std::string, std::string > const &labels) &
google::spanner::admin::instance::v1::CreateInstanceRequest && Build() &&
CreateInstanceRequestBuilder && SetNodeCount(int node_count) &&
This class identifies a Cloud Spanner Instance.
Definition: instance.h:41
std::string const & project_id() const
Returns the Project ID.
Definition: instance.h:55
CreateInstanceRequestBuilder is a builder class for google::spanner::admin::instance::v1::CreateInsta...
CreateInstanceRequestBuilder(Instance const &in, std::string config)
Constructor requires Instance and Cloud Spanner instance config name.
Contains all the Cloud Spanner C++ client types and functions.
CreateInstanceRequestBuilder & SetNodeCount(int node_count) &
google::spanner::admin::instance::v1::CreateInstanceRequest & Build() &
CreateInstanceRequestBuilder && SetLabels(std::map< std::string, std::string > const &labels) &&
#define SPANNER_CLIENT_NS
Definition: version.h:22
std::string const & instance_id() const
Returns the Instance ID.
Definition: instance.h:58
std::string FullName() const
Returns the fully qualified instance name as a string of the form: "projects/<project-id>/instances/<...
Definition: instance.cc:27
CreateInstanceRequestBuilder && SetDisplayName(std::string display_name) &&