Class: Masamune::Transform::Postgres::SnapshotDimension::TargetPresenter

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

Instance Method Summary collapse

Methods included from LastElement

#last_element

Instance Method Details

#insert_columns(_source = nil) ⇒ Object



42
43
44
# File 'lib/masamune/transform/postgres/snapshot_dimension.rb', line 42

def insert_columns(_source = nil)
  consolidated_columns.map { |_, column| column.name }
end

#insert_values(opts = {}) ⇒ Object



59
60
61
62
63
64
65
66
67
68
69
70
# File 'lib/masamune/transform/postgres/snapshot_dimension.rb', line 59

def insert_values(opts = {})
  window = opts[:window]
  consolidated_columns.map do |_, column|
    if column.natural_key
      "#{column.name} AS #{column.name}"
    elsif column.type == :key_value
      "hstore_merge(#{column.name}) OVER #{window} AS #{column.name}"
    else
      "coalesce_merge(#{column.name}) OVER #{window} AS #{column.name}"
    end
  end
end

#insert_view_constraintsObject



50
51
52
# File 'lib/masamune/transform/postgres/snapshot_dimension.rb', line 50

def insert_view_constraints
  consolidated_columns.reject { |_, column| !column.default.nil? || column.null }.map { |_, column| "#{column.name} IS NOT NULL" }
end

#insert_view_valuesObject



46
47
48
# File 'lib/masamune/transform/postgres/snapshot_dimension.rb', line 46

def insert_view_values
  consolidated_columns.map { |_, column| column.name }
end

#window(*extra) ⇒ Object



55
56
57
# File 'lib/masamune/transform/postgres/snapshot_dimension.rb', line 55

def window(*extra)
  (columns.values.select { |column| extra.delete(column.name) || column.natural_key || column.auto_reference }.map(&:name) + extra).uniq
end