Sha256: 792067267590d1fc26279d64daa64dc59679ef0abde9e80d47aacc689ede16c0

Contents?: true

Size: 987 Bytes

Versions: 1

Compression:

Stored size: 987 Bytes

Contents

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

module Lhm
  #  Determine and format columns common to origin and destination.
  class Intersection
    def initialize(origin, destination, renames = {})
      @origin = origin
      @destination = destination
      @renames = renames
    end

    def origin
      (common + @renames.keys).extend(Joiners)
    end

    def destination
      (common + @renames.values).extend(Joiners)
    end

    private

    def common
      (@origin.columns.keys & @destination.columns.keys).sort
    end

    module Joiners
      def escaped
        self.map { |name| tick(name)  }
      end

      def joined
        escaped.join(', ')
      end

      def typed(type)
        self.map { |name| qualified(name, type)  }.join(', ')
      end

    private

      def qualified(name, type)
        "`#{ type }`.`#{ name }`"
      end

      def tick(name)
        "`#{ name }`"
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
lhm-2.2.0 lib/lhm/intersection.rb