create_database_with_multiple_kms_keys

in spanner/spanner_samples.rb [225:288]


def create_database_with_multiple_kms_keys(
  project_id:, instance_id:, database_id:, kms_key_names:
)
  
  
  
  
  

  require "google/cloud/spanner"
  require "google/cloud/spanner/admin/database"

  database_admin_client = Google::Cloud::Spanner::Admin::Database.database_admin

  instance_path = database_admin_client.instance_path(
    project: project_id, instance: instance_id
  )

  encryption_config = {
    kms_key_names: kms_key_names
  }

  db_path = database_admin_client.database_path(
    project: project_id,
    instance: instance_id,
    database: database_id
  )

  job = database_admin_client.create_database(
    parent: instance_path,
    create_statement: "CREATE DATABASE `#{database_id}`",
    extra_statements: [
      <<~STATEMENT,
        CREATE TABLE Singers (
          SingerId    INT64 NOT NULL,
          FirstName   STRING(1024),
          LastName    STRING(1024),
          SingerInfo  BYTES(MAX)
        ) PRIMARY KEY (SingerId)
      STATEMENT
      <<~STATEMENT
        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
      STATEMENT
    ],
    encryption_config: encryption_config
  )

  puts "Waiting for create database operation to complete"

  job.wait_until_done!
  database = database_admin_client.get_database name: db_path

  puts "Database #{database_id} created with encryption key " \
       "#{database.encryption_config.kms_key_names}"

  
end