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
|