module PGTrunk::CommandRecorder

@private The module record commands done during a migration.

Public Class Methods

register(klass) click to toggle source

@param [PGTrunk::Operation] klass

# File lib/pg_trunk/core/railtie/command_recorder.rb, line 8
def self.register(klass)
  define_method(klass.ruby_name) do |*args, &block|
    record(klass.ruby_name, args, &block)
  end
end
register_inversion(klass) click to toggle source

@param [PGTrunk::Operation] klass

# File lib/pg_trunk/core/railtie/command_recorder.rb, line 15
def self.register_inversion(klass)
  define_method(klass.ruby_iname) do |args, &block|
    original = klass.from_ruby(*args, &block)
    inverted = original.invert!
    # for example (skip_inversion(:validate_foreign_key))
    return [:skip_inversion, [klass.ruby_name]] unless inverted

    # list of attributes `to_a` is added for reporting to stdout
    params = inverted.to_a
    opts = inverted.to_opts
    params << opts if opts.present?
    [inverted.class.ruby_name, params]
  end
end