Why Gemfury? Push, build, and install  RubyGems npm packages Python packages Maven artifacts PHP packages Go Modules Debian packages RPM packages NuGet packages

Repository URL to install this package:

Details    
uoy-faculty-datasync / lib / datasync / implicit_mapper.rb
Size: Mime:
# frozen_string_literal: true

require 'set'
require 'datasync/exceptions'
require 'datasync/sync_operation'
require 'datasync/mapper'

module Datasync
  # Implicit mapper handles sync between a source and destination, linking on a common field
  class ImplicitMapper < Mapper
    # Specialized SyncOperation which knows how to handle linking / unlinking
    class ImplicitSyncOp < SyncOperation
      def link(source_id, target_id); end

      def unlink(source_id, target_id); end

      def configure_classifier(classifier)
        classifier.assume_source_exists!
        classifier.assume_target_exists!
      end

      def links
        (source_ids & target_ids).map do |common_id|
          {
            source_id: common_id,
            target_id: common_id
          }
        end
      end
    end

    def sync_class
      ImplicitSyncOp
    end
  end
end