Class: Couchbase::Query

Inherits:
Object
  • Object
show all
Defined in:
lib/couchbase/query.rb

Constant Summary collapse

METHOD_MAPPING =
{
  :include_docs       => :setIncludeDocs,
  :descending         => :setDescending,
  :key                => :setKey,
  :keys               => :setKeys,
  :start_key          => :setRangeStart,
  :startkey           => :setRangeStart,
  :startkey_docid     => :setStartkeyDocID,
  :endkey             => :setRangeEnd,
  :endkey_docid       => :setEndkeyDocID,
  :inclusive_end      => :setInclusiveEnd,
  :limit              => :setLimit,
  :skip               => :setSkip,
  :reduce             => :setReduce,
  :group              => :setGroup,
  :group_level        => :setGroupLevel,
  :connection_timeout => nil
}.freeze

Instance Method Summary collapse

Constructor Details

#initialize(params) ⇒ Query

Returns a new instance of Query.



43
44
45
# File 'lib/couchbase/query.rb', line 43

def initialize(params)
  @params = params
end

Instance Method Details

#generateObject



47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
# File 'lib/couchbase/query.rb', line 47

def generate
  query = Java::ComCouchbaseClientProtocolViews::Query.new

  stale = @params.delete(:stale)
  if !stale.nil?
    case stale
    when :after_update
      query.setStale(Stale::UPDATE_AFTER)
    when :ok
      query.setStale(Stale::OK)
    when false
      query.setStale(Stale::FALSE)
    end
  end

  @params.each_pair do |meth, val|
    if METHOD_MAPPING.key?(meth)
      if java_meth = METHOD_MAPPING[meth]
        query.send(java_meth, val)
      end
    else
      fail ArgumentError, "Query does not support #{meth}"
    end
  end

  query
end