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