Class: Masamune::Transform::Common::DenormalizeTable::TargetPresenter
- Inherits:
-
SimpleDelegator
- Object
- SimpleDelegator
- Masamune::Transform::Common::DenormalizeTable::TargetPresenter
- Includes:
- LastElement
- Defined in:
- lib/masamune/transform/common/denormalize_table.rb
Instance Method Summary collapse
- #join_alias(reference) ⇒ Object
- #join_conditions(column_names) ⇒ Object
- #order_by_columns(column_names) ⇒ Object
- #select_columns(column_names) ⇒ Object
Methods included from LastElement
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 |