Class: SchemaFerry::Core::Translator

Inherits:
Object
  • Object
show all
Defined in:
lib/schema_ferry/core/translator.rb

Instance Method Summary collapse

Constructor Details

#initialize(config) ⇒ Translator

Returns a new instance of Translator.



6
7
8
9
10
# File 'lib/schema_ferry/core/translator.rb', line 6

def initialize(config)
  @config           = config
  @column_converter = ColumnConverter.new(TypeMapper.new(config.global_type_overrides))
  @enum_check       = (EnumCheckBuilder.new if config.enum_mode == :check)
end

Instance Method Details

#translate(raw_tables) ⇒ Object



12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# File 'lib/schema_ferry/core/translator.rb', line 12

def translate(raw_tables)
  kept_tables  = raw_tables.reject { |t| @config.ignored_tables.include?(t[:name]) }
  foreign_keys = kept_tables.to_h { |t| [t[:name], surviving_foreign_keys(t)] }
  fk_columns   = collect_fk_columns(foreign_keys)

  pg_tables = kept_tables.map do |raw|
    TableConverter.new(
      raw,
      rule:             @config.table_rules[raw[:name]],
      foreign_keys:     foreign_keys.fetch(raw[:name]),
      fk_columns:       fk_columns.fetch(raw[:name], []),
      column_converter: @column_converter,
      enum_check:       @enum_check
    ).convert
  end

  SchemafileRenderer.new.render(pg_tables)
end