Sha256: 7228ec208bf78ade9e9f90115a62b246beb09e39c6498cba4ff6ce381b1ca3ef

Contents?: true

Size: 832 Bytes

Versions: 2

Compression:

Stored size: 832 Bytes

Contents

require "virtus"
require "forwardable"

module Ddr::Index
  class Query
    include Virtus.model
    extend Forwardable

    attribute :q,       String
    attribute :fields,  Array[String], default: [ ]
    attribute :filters, Array[Filter], default: [ ]
    attribute :sort,    Array[String], default: [ ]
    attribute :rows,    Integer

    def_delegators :result, :count, :docs, :pids, :each_pid, :all

    def inspect
      "#<#{self.class.name} q=#{q.inspect}, filters=#{filters.inspect}," \
      " sort=#{sort.inspect}, rows=#{rows.inspect}, fields=#{fields.inspect}>"
    end

    def to_s
      URI.encode_www_form(params)
    end

    def params
      QueryParams.new(self).params
    end

    def result
      QueryResult.new(self)
    end

    def csv(**opts)
      CSVQueryResult.new(self, **opts)
    end

  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
ddr-models-2.4.0.rc4 lib/ddr/index/query.rb
ddr-models-2.4.0.rc3 lib/ddr/index/query.rb