Class: ActiveRecord::ConnectionAdapters::Spanner::SchemaDumper

Inherits:
ConnectionAdapters::SchemaDumper
  • Object
show all
Defined in:
lib/active_record/connection_adapters/spanner/schema_dumper.rb

Overview

:nodoc:

Instance Method Summary collapse

Instance Method Details

#default_primary_key?(column) ⇒ Boolean

Returns:

  • (Boolean)


13
14
15
# File 'lib/active_record/connection_adapters/spanner/schema_dumper.rb', line 13

def default_primary_key? column
  schema_type(column) == :integer
end

#header(stream) ⇒ Object



33
34
35
36
37
38
39
40
41
# File 'lib/active_record/connection_adapters/spanner/schema_dumper.rb', line 33

def header stream
  str = StringIO.new
  super str
  stream.puts <<~HEADER
    #{str.string.rstrip}
      connection.start_batch_ddl

  HEADER
end

#index_parts(index) ⇒ Object



53
54
55
56
57
58
59
# File 'lib/active_record/connection_adapters/spanner/schema_dumper.rb', line 53

def index_parts index
  index_parts = super
  index_parts << "null_filtered: #{index.null_filtered.inspect}" if index.null_filtered
  index_parts << "interleave_in: #{index.interleave_in.inspect}" if index.interleave_in
  index_parts << "storing: #{format_index_parts index.storing}" if index.storing.present?
  index_parts
end

#prepare_column_options(column) ⇒ Object



17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
# File 'lib/active_record/connection_adapters/spanner/schema_dumper.rb', line 17

def prepare_column_options column
  spec = super

  unless column..allow_commit_timestamp.nil?
    spec[:allow_commit_timestamp] = column..allow_commit_timestamp
  end

  if column.virtual?
    spec[:as] = extract_expression_for_virtual_column column
    spec[:stored] = true
    spec = { type: schema_type(column).inspect }.merge! spec
  end

  spec
end

#trailer(stream) ⇒ Object



43
44
45
46
47
48
49
50
51
# File 'lib/active_record/connection_adapters/spanner/schema_dumper.rb', line 43

def trailer stream
  stream.puts <<~TRAILER
      connection.run_batch
    rescue
      abort_batch
      raise
  TRAILER
  super
end