Sha256: 0443e2b5c76a5de3c1555c06a167b03912437a236361be1c2a21cf56879164d0

Contents?: true

Size: 1.43 KB

Versions: 20

Compression:

Stored size: 1.43 KB

Contents

require 'synchronisable/worker/base'

module Synchronisable
  module Worker
    # Responsible for record synchronization.
    #
    # @api private
    class Record < Base
      # Synchronizes record.
      def sync_record
        @synchronizer.with_record_sync_callbacks(@source) do
          log_info(@source.dump_message, :green)

          if @source.updatable?
            log_info("updating #{@source.model}: #{@source.local_record.id}", :blue)

            update_record
          else
            create_record_pair

            log_info("#{@source.model} (id: #{@source.local_record.id}) was created", :blue)
            log_info("#{@source.import_record.class}: #{@source.import_record.id} was created", :blue)
          end
        end
      end

      private

      def update_record
        @source.import_record.update_attributes(
          remote_id: @source.remote_id,
          attrs: @source.local_attrs
        )
        @source.local_record.update_attributes!(@source.local_attrs)
      end

      def create_record_pair
        record = @source.model.create!(@source.local_attrs)
        @source.import_record = Import.create!(
          :synchronisable_id    => record.id,
          :synchronisable_type  => @source.model.to_s,
          :remote_id            => @source.remote_id.to_s,
          :unique_id            => @source.unique_id.to_s,
          :attrs                => @source.local_attrs
        )
      end
    end
  end
end

Version data entries

20 entries across 20 versions & 1 rubygems

Version Path
synchronisable-1.3.1 lib/synchronisable/worker/record.rb
synchronisable-1.3.0 lib/synchronisable/worker/record.rb
synchronisable-1.2.7 lib/synchronisable/worker/record.rb
synchronisable-1.2.6 lib/synchronisable/worker/record.rb
synchronisable-1.2.5 lib/synchronisable/worker/record.rb
synchronisable-1.2.4 lib/synchronisable/worker/record.rb
synchronisable-1.2.3 lib/synchronisable/worker/record.rb
synchronisable-1.2.2 lib/synchronisable/worker/record.rb
synchronisable-1.2.1 lib/synchronisable/worker/record.rb
synchronisable-1.2.0 lib/synchronisable/worker/record.rb
synchronisable-1.1.9 lib/synchronisable/worker/record.rb
synchronisable-1.1.8 lib/synchronisable/worker/record.rb
synchronisable-1.1.7 lib/synchronisable/worker/record.rb
synchronisable-1.1.6 lib/synchronisable/worker/record.rb
synchronisable-1.1.5 lib/synchronisable/worker/record.rb
synchronisable-1.1.4 lib/synchronisable/worker/record.rb
synchronisable-1.1.3 lib/synchronisable/worker/record.rb
synchronisable-1.1.2 lib/synchronisable/worker/record.rb
synchronisable-1.1.1 lib/synchronisable/worker/record.rb
synchronisable-1.1.0 lib/synchronisable/worker/record.rb