Sha256: 113500324b6ab498d828bf082b32b36c22f3757604434e200656ba52333db937

Contents?: true

Size: 1.65 KB

Versions: 31

Compression:

Stored size: 1.65 KB

Contents

# frozen_string_literal: true

module Torque
  module PostgreSQL
    module Relation
      module Merger

        def merge # :nodoc:
          super

          merge_select_extra
          merge_distinct_on
          merge_auxiliary_statements
          merge_inheritance

          relation
        end

        private

          # Merge extra select columns
          def merge_select_extra
            relation.select_extra_values.concat(other.select_extra_values).uniq! \
              if other.select_extra_values.present?
          end

          # Merge distinct on columns
          def merge_distinct_on
            return if other.distinct_on_values.blank?
            relation.distinct_on_values += other.distinct_on_values
          end

          # Merge auxiliary statements activated by +with+
          def merge_auxiliary_statements
            return if other.auxiliary_statements_values.blank?

            current = relation.auxiliary_statements_values.map{ |cte| cte.class }
            other.auxiliary_statements_values.each do |other|
              next if current.include?(other.class)
              relation.auxiliary_statements_values += [other]
              current << other.class
            end
          end

          # Merge settings related to inheritance tables
          def merge_inheritance
            relation.itself_only_value = true if other.itself_only_value.present?

            if other.cast_records_value.present?
              relation.cast_records_value += other.cast_records_value
              relation.cast_records_value.uniq!
            end
          end

      end

      ActiveRecord::Relation::Merger.prepend Merger
    end
  end
end

Version data entries

31 entries across 31 versions & 1 rubygems

Version Path
torque-postgresql-3.4.1 lib/torque/postgresql/relation/merger.rb
torque-postgresql-2.4.5 lib/torque/postgresql/relation/merger.rb
torque-postgresql-3.4.0 lib/torque/postgresql/relation/merger.rb
torque-postgresql-3.3.3 lib/torque/postgresql/relation/merger.rb
torque-postgresql-2.4.4 lib/torque/postgresql/relation/merger.rb
torque-postgresql-3.3.2 lib/torque/postgresql/relation/merger.rb
torque-postgresql-2.4.3 lib/torque/postgresql/relation/merger.rb
torque-postgresql-3.3.1 lib/torque/postgresql/relation/merger.rb
torque-postgresql-3.3.0 lib/torque/postgresql/relation/merger.rb
torque-postgresql-3.2.2 lib/torque/postgresql/relation/merger.rb
torque-postgresql-2.4.2 lib/torque/postgresql/relation/merger.rb
torque-postgresql-2.4.1 lib/torque/postgresql/relation/merger.rb
torque-postgresql-3.2.1 lib/torque/postgresql/relation/merger.rb
torque-postgresql-2.4.0 lib/torque/postgresql/relation/merger.rb
torque-postgresql-3.2.0 lib/torque/postgresql/relation/merger.rb
torque-postgresql-3.1.0 lib/torque/postgresql/relation/merger.rb
torque-postgresql-2.3.0 lib/torque/postgresql/relation/merger.rb
torque-postgresql-3.0.1 lib/torque/postgresql/relation/merger.rb
torque-postgresql-2.2.4 lib/torque/postgresql/relation/merger.rb
torque-postgresql-3.0.0 lib/torque/postgresql/relation/merger.rb