class AgnosticBackend::Queryable::Elasticsearch::Visitor
Private Instance Methods
visit_attribute(subject)
click to toggle source
# File lib/agnostic_backend/queryable/elasticsearch/visitor.rb, line 172 def visit_attribute(subject) subject.name.split('.').join('__') end
visit_criteria_contains(subject)
click to toggle source
# File lib/agnostic_backend/queryable/elasticsearch/visitor.rb, line 100 def visit_criteria_contains(subject) { "wildcard" => { visit(subject.attribute) => '*' + visit(subject.value) + '*'} } end
visit_criteria_equal(subject)
click to toggle source
# File lib/agnostic_backend/queryable/elasticsearch/visitor.rb, line 8 def visit_criteria_equal(subject) { "term" => { visit(subject.attribute) => visit(subject.value) } } end
visit_criteria_greater(subject)
click to toggle source
# File lib/agnostic_backend/queryable/elasticsearch/visitor.rb, line 16 def visit_criteria_greater(subject) { "range" => { visit(subject.attribute) => { "gt" => visit(subject.value) } } } end
visit_criteria_greater_and_less(subject)
click to toggle source
# File lib/agnostic_backend/queryable/elasticsearch/visitor.rb, line 56 def visit_criteria_greater_and_less(subject) { "range" => { visit(subject.attribute) => { "gt" => visit(subject.left_value), "lt" => visit(subject.right_value) } } } end
visit_criteria_greater_and_less_equal(subject)
click to toggle source
# File lib/agnostic_backend/queryable/elasticsearch/visitor.rb, line 78 def visit_criteria_greater_and_less_equal(subject) { "range" => { visit(subject.attribute) => { "gt" => visit(subject.left_value), "lte" => visit(subject.right_value) } } } end
visit_criteria_greater_equal(subject)
click to toggle source
# File lib/agnostic_backend/queryable/elasticsearch/visitor.rb, line 36 def visit_criteria_greater_equal(subject) { "range" => { visit(subject.attribute) => { "gte" => visit(subject.value) } } } end
visit_criteria_greater_equal_and_less(subject)
click to toggle source
# File lib/agnostic_backend/queryable/elasticsearch/visitor.rb, line 67 def visit_criteria_greater_equal_and_less(subject) { "range" => { visit(subject.attribute) => { "gte" => visit(subject.left_value), "lt" => visit(subject.right_value) } } } end
visit_criteria_greater_equal_and_less_equal(subject)
click to toggle source
# File lib/agnostic_backend/queryable/elasticsearch/visitor.rb, line 89 def visit_criteria_greater_equal_and_less_equal(subject) { "range" => { visit(subject.attribute) => { "gte" => visit(subject.left_value), "lte" => visit(subject.right_value) } } } end
visit_criteria_less(subject)
click to toggle source
# File lib/agnostic_backend/queryable/elasticsearch/visitor.rb, line 26 def visit_criteria_less(subject) { "range" => { visit(subject.attribute) => { "lt" => visit(subject.value) } } } end
visit_criteria_less_equal(subject)
click to toggle source
# File lib/agnostic_backend/queryable/elasticsearch/visitor.rb, line 46 def visit_criteria_less_equal(subject) { "range" => { visit(subject.attribute) => { "lte" => visit(subject.value) } } } end
visit_criteria_not_equal(subject)
click to toggle source
# File lib/agnostic_backend/queryable/elasticsearch/visitor.rb, line 12 def visit_criteria_not_equal(subject) { "must_not" => visit_criteria_equal(subject) } end
visit_criteria_starts(subject)
click to toggle source
# File lib/agnostic_backend/queryable/elasticsearch/visitor.rb, line 104 def visit_criteria_starts(subject) { "wildcard" => { visit(subject.attribute) => '*' + visit(subject.value) } } end
visit_expressions_limit(subject)
click to toggle source
# File lib/agnostic_backend/queryable/elasticsearch/visitor.rb, line 150 def visit_expressions_limit(subject) { "size" => visit(subject.limit) } end
visit_expressions_offset(subject)
click to toggle source
# File lib/agnostic_backend/queryable/elasticsearch/visitor.rb, line 154 def visit_expressions_offset(subject) { "from" => visit(subject.offset) } end
visit_expressions_order(subject)
click to toggle source
# File lib/agnostic_backend/queryable/elasticsearch/visitor.rb, line 146 def visit_expressions_order(subject) { "sort" => subject.qualifiers.map{|o| visit(o)} } end
visit_expressions_scroll_cursor(subject)
click to toggle source
# File lib/agnostic_backend/queryable/elasticsearch/visitor.rb, line 158 def visit_expressions_scroll_cursor(subject) result = { "scroll" => "1m" } result.merge!( { "scroll_id" => visit(subject.scroll_cursor) } ) if visit(subject.scroll_cursor) != 'initial' result end
visit_expressions_select(subject)
click to toggle source
# File lib/agnostic_backend/queryable/elasticsearch/visitor.rb, line 142 def visit_expressions_select(subject) { "fields" => subject.projections.map{|c| visit(c)} } #return= end
visit_expressions_where(subject)
click to toggle source
# File lib/agnostic_backend/queryable/elasticsearch/visitor.rb, line 138 def visit_expressions_where(subject) { "filter" => visit(subject.criterion) } end
visit_operations_and(subject)
click to toggle source
# File lib/agnostic_backend/queryable/elasticsearch/visitor.rb, line 112 def visit_operations_and(subject) {"bool" => { "must" => subject.operands.map{|o| visit(o)} } } end
visit_operations_ascending(subject)
click to toggle source
# File lib/agnostic_backend/queryable/elasticsearch/visitor.rb, line 120 def visit_operations_ascending(subject) { visit(subject.attribute) => {"order" => "asc" } } end
visit_operations_descending(subject)
click to toggle source
# File lib/agnostic_backend/queryable/elasticsearch/visitor.rb, line 124 def visit_operations_descending(subject) { visit(subject.attribute) => {"order" => "desc" } } end
visit_operations_not(subject)
click to toggle source
# File lib/agnostic_backend/queryable/elasticsearch/visitor.rb, line 108 def visit_operations_not(subject) {"bool" => { "must_not" => subject.operands.map{|o| visit(o)} } } end
visit_operations_or(subject)
click to toggle source
# File lib/agnostic_backend/queryable/elasticsearch/visitor.rb, line 116 def visit_operations_or(subject) {"bool" => { "should" => subject.operands.map{|o| visit(o)} } } end
visit_query(subject)
click to toggle source
# File lib/agnostic_backend/queryable/elasticsearch/visitor.rb, line 128 def visit_query(subject) result = {} subject.children.each do |c| result.merge!(visit(c)) do |key, v1, v2| v1 + v2 end end result end
visit_value(subject)
click to toggle source
# File lib/agnostic_backend/queryable/elasticsearch/visitor.rb, line 176 def visit_value(subject) case subject.type when :integer subject.value when :date,:date_array "#{subject.value.utc.strftime("%Y-%m-%dT%H:%M:%SZ")}" when :double subject.value when :boolean subject.value when :string,:string_array,:text,:text_array subject.value else subject.value end end