diff --git a/commit_msg.txt b/commit_msg.txt new file mode 100644 index 0000000000000..7b75b8214f9d0 --- /dev/null +++ b/commit_msg.txt @@ -0,0 +1,5 @@ +feat(c++): add deleteFolderRecursive sample + +This adds a sample demonstrating how to recursively delete a folder in a hierarchical namespace bucket. + +Fixes: b/521168740 diff --git a/google/cloud/storagecontrol/v2/samples/storage_control_folder_samples.cc b/google/cloud/storagecontrol/v2/samples/storage_control_folder_samples.cc index 43e8050f65f4c..00b29b56a0bc4 100644 --- a/google/cloud/storagecontrol/v2/samples/storage_control_folder_samples.cc +++ b/google/cloud/storagecontrol/v2/samples/storage_control_folder_samples.cc @@ -76,6 +76,25 @@ void DeleteFolder(google::cloud::storagecontrol_v2::StorageControlClient client, (std::move(client), argv.at(0), argv.at(1)); } +void DeleteFolderRecursive( + google::cloud::storagecontrol_v2::StorageControlClient client, + std::vector const& argv) { + // [START storage_control_delete_folder_recursive] + namespace storagecontrol = google::cloud::storagecontrol_v2; + [](storagecontrol::StorageControlClient client, + std::string const& bucket_name, std::string const& folder_id) { + // Set project to "_" to signify globally scoped bucket + auto const name = std::string{"projects/_/buckets/"} + bucket_name + + "/folders/" + folder_id; + auto deleted = client.DeleteFolderRecursive(name).get(); + if (!deleted) throw std::move(deleted).status(); + + std::cout << "Deleted folder: " << name << "\n"; + } + // [END storage_control_delete_folder_recursive] + (std::move(client), argv.at(0), argv.at(1)); +} + void GetFolder(google::cloud::storagecontrol_v2::StorageControlClient client, std::vector const& argv) { // [START storage_control_get_folder] @@ -176,6 +195,11 @@ void AutoRun(std::vector const& argv) { std::cout << "\nRunning DeleteFolder() example" << std::endl; DeleteFolder(client, {bucket_name, dest_folder_id}); + + std::cout << "\nRunning DeleteFolderRecursive() example" << std::endl; + CreateFolder(client, {bucket_name, folder_id}); + CreateFolder(client, {bucket_name, folder_id + "/subfolder"}); + DeleteFolderRecursive(client, {bucket_name, folder_id}); } } // namespace @@ -207,6 +231,8 @@ int main(int argc, char* argv[]) { // NOLINT(bugprone-exception-escape) Example example({ make_entry("create-folder", {"bucket-name", "folder-id"}, CreateFolder), make_entry("delete-folder", {"bucket-name", "folder-id"}, DeleteFolder), + make_entry("delete-folder-recursive", {"bucket-name", "folder-id"}, + DeleteFolderRecursive), make_entry("get-folder", {"bucket-name", "folder-id"}, GetFolder), make_entry("list-folders", {"bucket-name"}, ListFolders), make_entry("rename-folder",