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