Sha256: 928a376801d39eb609ead3f572bdb88730ab71839fe5808cd5ea455de8144066

Contents?: true

Size: 927 Bytes

Versions: 12

Compression:

Stored size: 927 Bytes

Contents

module ActiveRecord::Turntable
  class Mixer
    class Fader
      class SelectShardsMergeResult < Fader
        def execute
          results = @shards_query_hash.map do |shard, query|
            args = @args.dup
            args[1] = args[1].dup if args[1].present?
            shard.connection.send(@called_method, query, *args, &@block)
          end
          merge_results(results)
        end

        private

          def merge_results(results)
            if results.any? { |r| r.is_a?(ActiveRecord::Result) }
              first_result = results.find(&:present?)
              return results.first unless first_result

              ActiveRecord::Result.new(
                first_result.columns,
                results.flat_map(&:rows),
                first_result.column_types
              )
            else
              results.compact.inject(&:+)
            end
          end
      end
    end
  end
end

Version data entries

12 entries across 12 versions & 1 rubygems

Version Path
activerecord-turntable-4.4.1 lib/active_record/turntable/mixer/fader/select_shards_merge_result.rb
activerecord-turntable-4.4.0 lib/active_record/turntable/mixer/fader/select_shards_merge_result.rb
activerecord-turntable-4.3.0 lib/active_record/turntable/mixer/fader/select_shards_merge_result.rb
activerecord-turntable-4.2.0 lib/active_record/turntable/mixer/fader/select_shards_merge_result.rb
activerecord-turntable-4.1.0 lib/active_record/turntable/mixer/fader/select_shards_merge_result.rb
activerecord-turntable-4.0.0 lib/active_record/turntable/mixer/fader/select_shards_merge_result.rb
activerecord-turntable-3.1.0 lib/active_record/turntable/mixer/fader/select_shards_merge_result.rb
activerecord-turntable-3.0.1 lib/active_record/turntable/mixer/fader/select_shards_merge_result.rb
activerecord-turntable-3.0.0 lib/active_record/turntable/mixer/fader/select_shards_merge_result.rb
activerecord-turntable-3.0.0.alpha3 lib/active_record/turntable/mixer/fader/select_shards_merge_result.rb
activerecord-turntable-3.0.0.alpha2 lib/active_record/turntable/mixer/fader/select_shards_merge_result.rb
activerecord-turntable-3.0.0.alpha1 lib/active_record/turntable/mixer/fader/select_shards_merge_result.rb