create_database_with_default_leader \

in spanner/database_leader_placement_samples.rb [70:116]


def create_database_with_default_leader \
  project_id:, instance_id:, database_id:, default_leader:
  
  
  
  
  

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

  db_admin_client = Google::Cloud::Spanner::Admin::Database.database_admin project_id: project_id

  instance_path = \
    db_admin_client.instance_path project: project_id, instance: instance_id
  statements = [
    "CREATE TABLE Singers (
      SingerId     INT64 NOT NULL,
      FirstName    STRING(1024),
      LastName     STRING(1024),
      SingerInfo   BYTES(MAX)
    ) PRIMARY KEY (SingerId)",

    "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",

    "ALTER DATABASE `#{database_id}` SET OPTIONS (
      default_leader = '#{default_leader}'
    )"
  ]

  job = db_admin_client.create_database \
    parent: instance_path,
    create_statement: "CREATE DATABASE `#{database_id}`",
    extra_statements: statements

  job.wait_until_done!
  database = job.results

  puts "Created database [#{database.name}] with default leader: #{database.default_leader}"
  
end