Sha256: eab7a164660d68b6f8b951f81951bc17d8ce2d2e2bdcc58c6e3a1969d048f9f6

Contents?: true

Size: 1.16 KB

Versions: 5

Compression:

Stored size: 1.16 KB

Contents

module Sunspot
  module Query
    #
    # A Group groups by the unique values of a given field, or by given queries.
    #
    class Group
      attr_accessor :limit, :truncate, :ngroups
      attr_reader :fields, :queries

      def initialize
        @sort = SortComposite.new
        @fields = []
        @queries = []
      end

      def add_field(field)
        if field.multiple?
          raise(ArgumentError, "#{field.name} cannot be used for grouping because it is a multiple-value field")
        end
        @fields << field
      end

      def add_query(query)
        @queries << query
      end

      def add_sort(sort)
        @sort << sort
      end

      def to_params
        params = {
          :group            => 'true',
          :"group.ngroups"  => @ngroups.nil? ? 'true' : @ngroups.to_s
        }

        params.merge!(@sort.to_params('group.'))
        params[:"group.field"] = @fields.map(&:indexed_name) if @fields.any?
        params[:"group.query"] = @queries.map(&:to_boolean_phrase) if @queries.any?
        params[:"group.limit"] = @limit if @limit
        params[:"group.truncate"] = @truncate if @truncate
        params
      end
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
sunspot-2.7.1 lib/sunspot/query/group.rb
sunspot-2.7.0 lib/sunspot/query/group.rb
sunspot-2.6.0 lib/sunspot/query/group.rb
sunspot-2.5.0 lib/sunspot/query/group.rb
sunspot-2.4.0 lib/sunspot/query/group.rb