Class: Masamune::Transform::Postgres::SnapshotDimension::TargetPresenter
- Inherits:
-
SimpleDelegator
- Object
- SimpleDelegator
- Masamune::Transform::Postgres::SnapshotDimension::TargetPresenter
- Includes:
- LastElement
- Defined in:
- lib/masamune/transform/postgres/snapshot_dimension.rb
Instance Method Summary collapse
- #insert_columns(_source = nil) ⇒ Object
- #insert_values(opts = {}) ⇒ Object
- #insert_view_constraints ⇒ Object
- #insert_view_values ⇒ Object
- #window(*extra) ⇒ Object
Methods included from LastElement
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_constraints ⇒ Object
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_values ⇒ Object
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 |