Google Cloud Spanner C++ Client 2.13.0
A C++ Client Library for Google Cloud Spanner
Loading...
Searching...
No Matches
instance.h
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// https://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_INSTANCE_H
16#define GOOGLE_CLOUD_CPP_GOOGLE_CLOUD_SPANNER_INSTANCE_H
17
18#include "google/cloud/spanner/version.h"
19#include "google/cloud/project.h"
20#include "google/cloud/status_or.h"
21#include <iosfwd>
22#include <string>
23
24namespace google {
25namespace cloud {
26namespace spanner {
27GOOGLE_CLOUD_CPP_INLINE_NAMESPACE_BEGIN
28
29/**
30 * This class identifies a Cloud Spanner Instance.
31 *
32 * A Cloud Spanner instance is identified by its `project_id` and `instance_id`.
33 *
34 * @note This class makes no effort to validate the components of the
35 * database name. It is the application's responsibility to provide valid
36 * project, and instance ids. Passing invalid values will not be checked
37 * until the instance name is used in a RPC to spanner.
38 *
39 * For more info about the `instance_id` format, see
40 * https://cloud.google.com/spanner/docs/reference/rpc/google.spanner.admin.instance.v1#createinstancerequest
41 */
42class Instance {
43 public:
44 /**
45 * Constructs an Instance object identified by the given @p project and
46 * @p instance_id.
47 */
48 Instance(Project project, std::string instance_id);
49
50 /**
51 * Constructs an Instance object identified by the given IDs.
52 *
53 * This is equivalent to first constructing a `Project` from the given
54 * @p project_id and then calling the `Instance(Project, std::string)`
55 * constructor.
56 */
57 Instance(std::string project_id, std::string instance_id);
58
59 /// @name Copy and move
60 ///@{
61 Instance(Instance const&) = default;
62 Instance& operator=(Instance const&) = default;
63 Instance(Instance&&) = default;
64 Instance& operator=(Instance&&) = default;
65 ///@}
66
67 /// Returns the `Project` containing this instance.
68 Project const& project() const { return project_; }
69 std::string const& project_id() const { return project_.project_id(); }
70
71 /// Returns the Instance ID.
72 std::string const& instance_id() const { return instance_id_; }
73
74 /**
75 * Returns the fully qualified instance name as a string of the form:
76 * "projects/<project-id>/instances/<instance-id>"
77 */
78 std::string FullName() const;
79
80 /// @name Equality operators
81 ///@{
82 friend bool operator==(Instance const& a, Instance const& b);
83 friend bool operator!=(Instance const& a, Instance const& b);
84 ///@}
85
86 /// Output the `FullName()` format.
87 friend std::ostream& operator<<(std::ostream&, Instance const&);
88
89 private:
90 Project project_;
91 std::string instance_id_;
92};
93
94/**
95 * Constructs an `Instance` from the given @p full_name.
96 * Returns a non-OK Status if `full_name` is improperly formed.
97 */
98StatusOr<Instance> MakeInstance(std::string const& full_name);
99
100GOOGLE_CLOUD_CPP_INLINE_NAMESPACE_END
101} // namespace spanner
102} // namespace cloud
103} // namespace google
104
105#endif // GOOGLE_CLOUD_CPP_GOOGLE_CLOUD_SPANNER_INSTANCE_H
std::string const & project_id() const
This class identifies a Cloud Spanner Instance.
Definition: instance.h:42
Instance(Project project, std::string instance_id)
Constructs an Instance object identified by the given project and instance_id.
std::string FullName() const
Returns the fully qualified instance name as a string of the form: "projects/<project-id>/instances/<...
friend bool operator==(Instance const &a, Instance const &b)
Project const & project() const
Returns the Project containing this instance.
Definition: instance.h:68
Instance(Instance &&)=default
friend bool operator!=(Instance const &a, Instance const &b)
Instance & operator=(Instance const &)=default
std::string const & project_id() const
Definition: instance.h:69
Instance & operator=(Instance &&)=default
Instance(std::string project_id, std::string instance_id)
Constructs an Instance object identified by the given IDs.
std::string const & instance_id() const
Returns the Instance ID.
Definition: instance.h:72
Instance(Instance const &)=default
Contains all the Cloud Spanner C++ client types and functions.
Definition: backoff_policy.h:23
StatusOr< Instance > MakeInstance(std::string const &full_name)
Constructs an Instance from the given full_name.