class ActiveRecord::Tasks::SpannerDatabaseTasks

Public Class Methods

new(config) click to toggle source
# File lib/active_record/tasks/spanner_database_tasks.rb, line 12
def initialize config
  config = config.symbolize_keys
  @connection = ActiveRecordSpannerAdapter::Connection.new config
end

Public Instance Methods

charset() click to toggle source
# File lib/active_record/tasks/spanner_database_tasks.rb, line 36
def charset
  nil
end
collation() click to toggle source
# File lib/active_record/tasks/spanner_database_tasks.rb, line 40
def collation
  nil
end
create() click to toggle source
# File lib/active_record/tasks/spanner_database_tasks.rb, line 17
def create
  @connection.create_database
rescue Google::Cloud::Error => error
  if error.instance_of? Google::Cloud::AlreadyExistsError
    raise ActiveRecord::Tasks::DatabaseAlreadyExists
  end

  raise error
end
drop() click to toggle source
# File lib/active_record/tasks/spanner_database_tasks.rb, line 27
def drop
  @connection.database.drop
end
purge() click to toggle source
# File lib/active_record/tasks/spanner_database_tasks.rb, line 31
def purge
  drop
  create
end
structure_dump(filename, _extra_flags) click to toggle source
# File lib/active_record/tasks/spanner_database_tasks.rb, line 44
def structure_dump filename, _extra_flags
  file = File.open filename, "w"
  ignore_tables = ActiveRecord::SchemaDumper.ignore_tables

  if ignore_tables.any?
    index_regx = /^CREATE(.*)INDEX(.*)ON (#{ignore_tables.join "|"})\(/
    table_regx = /^CREATE TABLE (#{ignore_tables.join "|"})/
  end

  @connection.database.ddl(force: true).each do |statement|
    next if ignore_tables.any? &&
            (table_regx =~ statement || index_regx =~ statement)
    file.write statement
    file.write "\n"
  end
ensure
  file.close
end
structure_load(filename, _extra_flags) click to toggle source
# File lib/active_record/tasks/spanner_database_tasks.rb, line 63
def structure_load filename, _extra_flags
  statements = File.read(filename).split(/(?=^CREATE)/)
  @connection.execute_ddl statements
end