Class: Masamune::Transform::Postgres::InsertReferenceValues::TargetPresenter

Inherits:
SimpleDelegator
  • Object
show all
Includes:
LastElement
Defined in:
lib/masamune/transform/postgres/insert_reference_values.rb

Instance Method Summary collapse

Methods included from LastElement

#last_element

Instance Method Details

#insert_columns(source) ⇒ Object



45
46
47
# File 'lib/masamune/transform/postgres/insert_reference_values.rb', line 45

def insert_columns(source)
  source.shared_columns(stage_table).map { |_, columns| columns.first.name }
end

#insert_constraints(source) ⇒ Object



60
61
62
# File 'lib/masamune/transform/postgres/insert_reference_values.rb', line 60

def insert_constraints(source)
  source.shared_columns(stage_table).reject { |column, _| column.null || column.default || column.adjacent.try(:default) }.map { |column, _| "#{column.name} IS NOT NULL" }
end

#insert_values(source) ⇒ Object



49
50
51
52
53
54
55
56
57
# File 'lib/masamune/transform/postgres/insert_reference_values.rb', line 49

def insert_values(source)
  source.shared_columns(stage_table).map do |column, _|
    if column.adjacent.try(:default)
      "COALESCE(#{column.name}, #{column.adjacent.sql_value(column.adjacent.default)})"
    else
      column.name
    end
  end
end