class PGTrunk::Operations::Views::ChangeView

@private

Public Instance Methods

invert() click to toggle source
# File lib/pg_trunk/operations/views/change_view.rb, line 66
    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(**inversion, name: name)
    end
to_sql(server_version) click to toggle source
# File lib/pg_trunk/operations/views/change_view.rb, line 62
def to_sql(server_version)
  create_view&.to_sql(server_version)
end

Private Instance Methods

changes() click to toggle source
# File lib/pg_trunk/operations/views/change_view.rb, line 78
def changes
  @changes ||= to_h.slice(:sql_definition, :check, :comment).compact
end
create_view() click to toggle source
# File lib/pg_trunk/operations/views/change_view.rb, line 91
def create_view
  return if name.blank?

  @create_view ||= CreateView.find { |o| o.name == name }&.tap do |op|
    op.attributes = { **changes, replace_existing: true }
  end
end
inversion() click to toggle source
# File lib/pg_trunk/operations/views/change_view.rb, line 82
def inversion
  @inversion ||= {}.tap do |inv|
    inv[:version] = from_version if version
    inv[:sql_definition] = from_sql_definition unless version
    inv[:check] = from_check if check
    inv[:comment] = from_comment if comment
  end
end