public async Task RunWithTemporaryDatabaseAsync(string instanceId, string databaseId, Func <string, Task> testFunction, params string[] extraStatements) { var operation = await DatabaseAdminClient.CreateDatabaseAsync(new CreateDatabaseRequest { ParentAsInstanceName = InstanceName.FromProjectInstance(ProjectId, instanceId), CreateStatement = $"CREATE DATABASE `{databaseId}`", ExtraStatements = { extraStatements }, }); var completedResponse = await operation.PollUntilCompletedAsync(); if (completedResponse.IsFaulted) { throw completedResponse.Exception; } try { await testFunction(databaseId); } finally { // Cleanup the test database. await DatabaseAdminClient.DropDatabaseAsync(DatabaseName.FormatProjectInstanceDatabase(ProjectId, instanceId, databaseId)); } }
/// <summary>Snippet for CreateDatabaseAsync</summary> public async Task CreateDatabaseAsync() { // Snippet: CreateDatabaseAsync(InstanceName,string,CallSettings) // Additional: CreateDatabaseAsync(InstanceName,string,CancellationToken) // Create client DatabaseAdminClient databaseAdminClient = await DatabaseAdminClient.CreateAsync(); // Initialize request argument(s) InstanceName parent = new InstanceName("[PROJECT]", "[INSTANCE]"); string createStatement = ""; // Make the request Operation <Database, CreateDatabaseMetadata> response = await databaseAdminClient.CreateDatabaseAsync(parent, createStatement); // Poll until the returned long-running operation is complete Operation <Database, CreateDatabaseMetadata> completedResponse = await response.PollUntilCompletedAsync(); // Retrieve the operation result Database result = completedResponse.Result; // Or get the name of the operation string operationName = response.Name; // This name can be stored, then the long-running operation retrieved later by name Operation <Database, CreateDatabaseMetadata> retrievedResponse = await databaseAdminClient.PollOnceCreateDatabaseAsync(operationName); // Check if the retrieved long-running operation has completed if (retrievedResponse.IsCompleted) { // If it has completed, then access the result Database retrievedResult = retrievedResponse.Result; } // End snippet }
public async Task <Database> CreateDatabaseWithEncryptionKeyAsync(string projectId, string instanceId, string databaseId, CryptoKeyName kmsKeyName) { // Create a DatabaseAdminClient instance that can be used to execute a // CreateDatabaseRequest with custom encryption configuration options. DatabaseAdminClient databaseAdminClient = DatabaseAdminClient.Create(); // Define create table statement for table #1. var createSingersTable = @"CREATE TABLE Singers ( SingerId INT64 NOT NULL, FirstName STRING(1024), LastName STRING(1024), ComposerInfo BYTES(MAX) ) PRIMARY KEY (SingerId)"; // Define create table statement for table #2. var createAlbumsTable = @"CREATE TABLE Albums ( SingerId INT64 NOT NULL, AlbumId INT64 NOT NULL, AlbumTitle STRING(MAX) ) PRIMARY KEY (SingerId, AlbumId), INTERLEAVE IN PARENT Singers ON DELETE CASCADE"; // Create the CreateDatabase request with encryption configuration and execute it. var request = new CreateDatabaseRequest { ParentAsInstanceName = InstanceName.FromProjectInstance(projectId, instanceId), CreateStatement = $"CREATE DATABASE `{databaseId}`", ExtraStatements = { createSingersTable, createAlbumsTable }, EncryptionConfig = new EncryptionConfig { KmsKeyNameAsCryptoKeyName = kmsKeyName, }, }; var operation = await databaseAdminClient.CreateDatabaseAsync(request); // Wait until the operation has finished. Console.WriteLine("Waiting for the operation to finish."); var completedResponse = await operation.PollUntilCompletedAsync(); if (completedResponse.IsFaulted) { Console.WriteLine($"Error while creating database: {completedResponse.Exception}"); throw completedResponse.Exception; } var database = completedResponse.Result; Console.WriteLine($"Database {database.Name} created with encryption key {database.EncryptionConfig.KmsKeyName}"); return(database); }
public async Task <Database> CreateDatabaseWithDefaultLeaderAsync(string projectId, string instanceId, string databaseId, string defaultLeader) { DatabaseAdminClient databaseAdminClient = await DatabaseAdminClient.CreateAsync(); // Define create table statement for table #1. var createSingersTable = @"CREATE TABLE Singers ( SingerId INT64 NOT NULL, FirstName STRING(1024), LastName STRING(1024), ComposerInfo BYTES(MAX) ) PRIMARY KEY (SingerId)"; // Define create table statement for table #2. var createAlbumsTable = @"CREATE TABLE Albums ( SingerId INT64 NOT NULL, AlbumId INT64 NOT NULL, AlbumTitle STRING(MAX) ) PRIMARY KEY (SingerId, AlbumId), INTERLEAVE IN PARENT Singers ON DELETE CASCADE"; // Define alter database statement to set default leader. var alterDatabaseStatement = @$ "ALTER DATABASE `{databaseId}` SET OPTIONS (default_leader = '{defaultLeader}')"; // Create the CreateDatabase request with default leader and execute it. var request = new CreateDatabaseRequest { ParentAsInstanceName = InstanceName.FromProjectInstance(projectId, instanceId), CreateStatement = $"CREATE DATABASE `{databaseId}`", ExtraStatements = { createSingersTable, createAlbumsTable, alterDatabaseStatement }, }; var operation = await databaseAdminClient.CreateDatabaseAsync(request); // Wait until the operation has finished. Console.WriteLine("Waiting for the operation to finish."); var completedResponse = await operation.PollUntilCompletedAsync(); if (completedResponse.IsFaulted) { Console.WriteLine($"Error while creating database: {completedResponse.Exception}"); throw completedResponse.Exception; } var database = completedResponse.Result; Console.WriteLine($"Created database [{databaseId}]"); Console.WriteLine($"\t Default leader: {database.DefaultLeader}"); return(database); }
public async Task CreateDatabaseAsync_RequestObject() { // Snippet: CreateDatabaseAsync(CreateDatabaseRequest,CallSettings) // Create client DatabaseAdminClient databaseAdminClient = await DatabaseAdminClient.CreateAsync(); // Initialize request argument(s) CreateDatabaseRequest request = new CreateDatabaseRequest { Parent = new InstanceName("[PROJECT]", "[INSTANCE]").ToString(), CreateStatement = "", }; // Make the request Operation <Database> response = await databaseAdminClient.CreateDatabaseAsync(request); // Poll until the returned long-running operation is complete Operation <Database> completedResponse = await response.PollUntilCompletedAsync(); // Retrieve the operation result Database result = completedResponse.Result; // Or get the name of the operation string operationName = response.Name; // This name can be stored, then the long-running operation retrieved later by name Operation <Database> retrievedResponse = await databaseAdminClient.PollOnceCreateDatabaseAsync(operationName); // Check if the retrieved long-running operation has completed if (retrievedResponse.IsCompleted) { // If it has completed, then access the result Database retrievedResult = retrievedResponse.Result; } // End snippet }