Method: MarkLogic::Collection#build_query

Defined in:
lib/marklogic/collection.rb

#build_query(name, operator, value, query_options = {}) ⇒ Object



132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
# File 'lib/marklogic/collection.rb', line 132

def build_query(name, operator, value, query_options = {})
  if database.has_range_index?(name) && (query_options.has_key?(:case_sensitive) == false || query_options[:case_sensitive] == true)
    index = database.range_index(name)
    type = index.scalar_type
    Queries::RangeQuery.new(name, operator, type, value, query_options)
  elsif operator != 'EQ'
    raise MissingIndexError.new("Missing index on #{name}")
  elsif value.nil?
    Queries::OrQuery.new([
      Queries::ValueQuery.new(name, value, query_options),
      Queries::NotQuery.new(Queries::ContainerQuery.new(name, Queries::AndQuery.new))
    ])
  elsif operator == 'EQ'
    Queries::ValueQuery.new(name, value, query_options)
  end
end