Sha256: 1a5a7fdde3513e94d64e735eb967b07805c884016020ce0938c0d07c3790f5c1

Contents?: true

Size: 925 Bytes

Versions: 5

Compression:

Stored size: 925 Bytes

Contents

# frozen_string_literal: true

module PGTrunk
  # @private
  # The module record commands done during a migration.
  module CommandRecorder
    # @param [PGTrunk::Operation] klass
    def self.register(klass)
      define_method(klass.ruby_name) do |*args, &block|
        record(klass.ruby_name, args, &block)
      end
    end

    # @param [PGTrunk::Operation] klass
    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
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
pg_trunk-0.2.0 lib/pg_trunk/core/railtie/command_recorder.rb
pg_trunk-0.1.3 lib/pg_trunk/core/railtie/command_recorder.rb
pg_trunk-0.1.2 lib/pg_trunk/core/railtie/command_recorder.rb
pg_trunk-0.1.1 lib/pg_trunk/core/railtie/command_recorder.rb
pg_trunk-0.1.0 lib/pg_trunk/core/railtie/command_recorder.rb