Class: Masamune::Transform::Common::DenormalizeTable::TargetPresenter

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

Instance Method Summary collapse

Methods included from LastElement

#last_element

Instance Method Details

#join_alias(reference) ⇒ Object



61
62
63
# File 'lib/masamune/transform/common/denormalize_table.rb', line 61

def join_alias(reference)
  reference.label ? "#{reference.name} AS #{[reference.label, reference.name].compact.join('_')}" : reference.name
end

#join_conditions(column_names) ⇒ Object



65
66
67
68
69
70
71
72
73
74
75
76
77
78
# File 'lib/masamune/transform/common/denormalize_table.rb', line 65

def join_conditions(column_names)
  {}.tap do |conditions|
    column_names.each do |column_name|
      column = dereference_column_name(column_name)
      next unless column && column.reference
      next if column.reference.degenerate
      adjacent_reference = references[column.reference.id]
      next unless adjacent_reference
      adjacent_column = columns[adjacent_reference.foreign_key_name]
      next unless adjacent_column
      conditions[join_alias(column.reference)] = "#{column.reference.surrogate_key.qualified_name(column.reference.label)} = #{adjacent_column.qualified_name}"
    end
  end
end

#order_by_columns(column_names) ⇒ Object



80
81
82
83
84
85
86
# File 'lib/masamune/transform/common/denormalize_table.rb', line 80

def order_by_columns(column_names)
  column_names.map do |column_name|
    column = dereference_column_name(column_name)
    next unless column
    column.name
  end.compact
end

#select_columns(column_names) ⇒ Object



44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
# File 'lib/masamune/transform/common/denormalize_table.rb', line 44

def select_columns(column_names)
  column_names.map do |column_name|
    column = dereference_column_name(column_name)
    next unless column
    if column.reference
      if column.reference.implicit || column.reference.degenerate
        "#{column.name} AS #{column.name}"
      else
        "#{column.foreign_key_name} AS #{column.name}"
      end
    else
      column.qualified_name
    end
  end.compact
end