Sha256: 6a8fcfa9fd7166bf469bf2027c39a8256e43dc1385d7e274e1775b80d0d18f7e

Contents?: true

Size: 887 Bytes

Versions: 7

Compression:

Stored size: 887 Bytes

Contents

# Copyright (c) 2011, SoundCloud Ltd., Rany Keddo, Tobias Bielohlawek, Tobias
# Schmidt

require 'lhm/chunker'
require 'lhm/entangler'
require 'lhm/locked_switcher'
require 'lhm/migrator'

module Lhm
  # Copies an origin table to an altered destination table. Live activity is
  # synchronized into the destination table using triggers.
  #
  # Once the origin and destination tables have converged, origin is archived
  # and replaced by destination.
  class Invoker
    attr_reader :migrator

    def initialize(origin, connection)
      @connection = connection
      @migrator = Migrator.new(origin, connection)
    end

    def run(chunk_options = {})
      migration = @migrator.run

      Entangler.new(migration, @connection).run do
        Chunker.new(migration, @connection, chunk_options).run
        LockedSwitcher.new(migration, @connection).run
      end
    end
  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
lhm-1.0.3 lib/lhm/invoker.rb
lhm-1.0.2 lib/lhm/invoker.rb
lhm-1.0.0.rc7 lib/lhm/invoker.rb
lhm-1.0.0.rc6 lib/lhm/invoker.rb
lhm-1.0.0.rc5 lib/lhm/invoker.rb
lhm-1.0.0.rc4 lib/lhm/invoker.rb
lhm-1.0.0.rc3 lib/lhm/invoker.rb