class PGTrunk::Operations::MaterializedViews::ChangeMaterializedView
@private
Public Instance Methods
invert()
click to toggle source
# File lib/pg_trunk/operations/materialized_views/change_materialized_view.rb, line 91 def invert irreversible!("if_exists: true") if if_exists undefined = inversion.select { |_, v| v.nil? }.keys.join(", ").presence raise IrreversibleMigration.new(self, nil, <<~MSG.squish) if undefined Undefined values to revert #{undefined}. MSG self.class.new(name: name, **inversion) if inversion.any? end
rename_column(name, to:)
click to toggle source
A method to be called in a block
# File lib/pg_trunk/operations/materialized_views/change_materialized_view.rb, line 73 def rename_column(name, to:) columns << Column.new(name: name, new_name: to) end
to_sql(_version)
click to toggle source
# File lib/pg_trunk/operations/materialized_views/change_materialized_view.rb, line 82 def to_sql(_version) [ *change_columns, *rename_columns, *cluster_view, *update_comment, ].join(" ") end
Private Instance Methods
alter_view()
click to toggle source
# File lib/pg_trunk/operations/materialized_views/change_materialized_view.rb, line 118 def alter_view @alter_view ||= begin sql = "ALTER MATERIALIZED VIEW" sql << " IF EXISTS" if if_exists sql << " #{name.to_sql}" end end
change_columns()
click to toggle source
# File lib/pg_trunk/operations/materialized_views/change_materialized_view.rb, line 126 def change_columns changes = columns.reject(&:new_name).map(&:to_sql).join(", ") "#{alter_view} #{changes};" if changes.present? end
changes()
click to toggle source
# File lib/pg_trunk/operations/materialized_views/change_materialized_view.rb, line 103 def changes @changes ||= { columns: columns.presence, cluster_on: cluster_on, comment: comment, }.compact end
cluster_view()
click to toggle source
# File lib/pg_trunk/operations/materialized_views/change_materialized_view.rb, line 136 def cluster_view "#{alter_view} CLUSTER ON #{cluster_on.inspect};" if cluster_on.present? end
inversion()
click to toggle source
# File lib/pg_trunk/operations/materialized_views/change_materialized_view.rb, line 111 def inversion @inversion ||= { columns: columns.map(&:invert).presence, comment: from_comment, }.slice(*changes.keys) end
rename_columns()
click to toggle source
# File lib/pg_trunk/operations/materialized_views/change_materialized_view.rb, line 131 def rename_columns changes = columns.select(&:new_name).map(&:to_sql).join(", ") "#{alter_view} #{changes};" if changes.present? end
update_comment()
click to toggle source
# File lib/pg_trunk/operations/materialized_views/change_materialized_view.rb, line 140 def update_comment return if comment.nil? <<~SQL COMMENT ON MATERIALIZED VIEW #{name.to_sql} IS $comment$#{comment}$comment$; SQL end