Class: Convergence::Dumper

Inherits:
Object
  • Object
show all
Defined in:
lib/convergence/dumper.rb

Defined Under Namespace

Classes: MysqlSchemaDumper

Instance Method Summary collapse

Instance Method Details

#dump_dsl(tables) ⇒ Object



2
3
4
5
6
# File 'lib/convergence/dumper.rb', line 2

def dump_dsl(tables)
  tables.map do |_, table|
    dump_table_dsl(table)
  end.join("\n\n")
end

#dump_table_dsl(table) ⇒ Object



8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# File 'lib/convergence/dumper.rb', line 8

def dump_table_dsl(table)
  table_argument = [table.table_name.to_sym.inspect]
  table_argument << table.table_options.map { |k, v| key_value_text(k, v) }
  dsl = "create_table #{table_argument.flatten.join(', ')} do |t|\n"
  dsl += "  #{table.columns.map { |_, column| dump_column(column) }.join("\n  ")}"
  dsl += "\n" if !table.indexes.empty? || !table.foreign_keys.empty?
  dsl += "\n"
  unless table.indexes.empty?
    dsl += "  #{table.indexes.map { |_, index| dump_index(index) }.join("\n  ")}"
    dsl += "\n"
  end
  unless table.foreign_keys.empty?
    dsl += "  #{table.foreign_keys.map { |_, key| dump_foreign_key(key) }.join("\n  ")}"
    dsl += "\n"
  end
  dsl += 'end'
  dsl
end