Sha256: 0296cee907d1ea9932742c132691cab98acb949b4af35eb680521f74cf1422ef

Contents?: true

Size: 1.17 KB

Versions: 11

Compression:

Stored size: 1.17 KB

Contents

module ActiveHouse
  module Querying
    module ArrayJoin
      extend ActiveSupport::Concern

      included do
        private :build_array_join_query_part
      end

      def build_array_join_query_part
        parts = []
        parts << "ARRAY JOIN #{values[:array_join].join(', ')}" unless values[:array_join].empty?
        parts << "LEFT ARRAY JOIN #{values[:array_join].join(', ')}" unless values[:left_array_join].empty?
        parts.join("\n")
      end

      def initial_values
        super.merge array_join: [], left_array_join: []
      end

      def array_join!(*fields)
        formatted_fields = ActiveHouse::PreparedStatement.format_fields(model_class, fields)
        values[:array_join] = (values[:array_join] + formatted_fields).uniq
        self
      end

      def array_join(*fields)
        dup.array_join!(*fields)
      end

      def left_array_join!(*fields)
        formatted_fields = ActiveHouse::PreparedStatement.format_fields(model_class, fields)
        values[:left_array_join] = (values[:left_array_join] + formatted_fields).uniq
        self
      end

      def left_array_join(*fields)
        dup.left_array_join!(*fields)
      end
    end
  end
end

Version data entries

11 entries across 11 versions & 1 rubygems

Version Path
active_house-0.8.0 lib/active_house/querying/array_join.rb
active_house-0.7.0 lib/active_house/querying/array_join.rb
active_house-0.6.6 lib/active_house/querying/array_join.rb
active_house-0.6.5 lib/active_house/querying/array_join.rb
active_house-0.6.4 lib/active_house/querying/array_join.rb
active_house-0.6.3 lib/active_house/querying/array_join.rb
active_house-0.6.2 lib/active_house/querying/array_join.rb
active_house-0.6.1 lib/active_house/querying/array_join.rb
active_house-0.6.0 lib/active_house/querying/array_join.rb
active_house-0.5.1 lib/active_house/querying/array_join.rb
active_house-0.5.0 lib/active_house/querying/array_join.rb