Module: GlobalUid::SchemaDumperExtension

Defined in:
lib/global_uid/schema_dumper_extension.rb

Instance Method Summary collapse

Instance Method Details

#get_pk(table) ⇒ Object



19
20
21
22
23
24
25
26
# File 'lib/global_uid/schema_dumper_extension.rb', line 19

def get_pk(table)
  if @connection.respond_to?(:pk_and_sequence_for)
    pk, _ = @connection.pk_and_sequence_for(table)
  elsif @connection.respond_to?(:primary_key)
    pk = @connection.primary_key(table)
  end
  pk
end

#table(table, stream) ⇒ Object



4
5
6
7
8
9
10
11
12
13
14
15
16
17
# File 'lib/global_uid/schema_dumper_extension.rb', line 4

def table(table, stream)
  io = super(table, StringIO.new)
  schema = io.string

  pk = get_pk(table)
  columns = @connection.columns(table)

  pkcol = columns.detect { |c| c.name == pk }
  use_global_uid = !(pkcol.extra =~ /auto/i)

  schema.sub!(/(create_table.*) do/, "\\1, use_global_uid: #{use_global_uid.inspect} do")
  stream.write(schema)
  stream
end