namespace cbt = ::google::cloud::bigtable;
namespace cbta = ::google::cloud::bigtable_admin;
using ::google::cloud::StatusOr;
[](cbta::BigtableTableAdminClient admin, std::string const& project_id,
std::string const& instance_id, std::string const& table_id) {
std::string instance_name = cbt::InstanceName(project_id, instance_id);
std::string table_name = cbt::TableName(project_id, instance_id, table_id);
google::bigtable::admin::v2::GetTableRequest r;
r.set_name(table_name);
r.set_view(google::bigtable::admin::v2::Table::FULL);
StatusOr<google::bigtable::admin::v2::Table> table = admin.GetTable(r);
if (!table &&
table.status().code() == google::cloud::StatusCode::kNotFound) {
// The table does not exist, try to create the table.
table = admin.CreateTable(instance_name, table_id, {});
if (!table) throw std::runtime_error(table.status().message());
// The schema returned by a `CreateTable()` request does not include all
// the metadata for a table, we need to explicitly request the rest:
table = admin.GetTable(std::move(r));
}
if (!table) throw std::runtime_error(table.status().message());
std::cout << "Table metadata: " << table->DebugString() << "\n";
}