Class: AdvancedQueryBuilder

Inherits:
Object
  • Object
show all
Defined in:
common/advanced_query_builder.rb

Instance Method Summary (collapse)

Constructor Details

- (AdvancedQueryBuilder) initialize(queries, visibility)

Returns a new instance of AdvancedQueryBuilder



3
4
5
6
7
8
9
# File 'common/advanced_query_builder.rb', line 3

def initialize(queries, visibility)
  @queries = queries
  @visibility = visibility

  raise "Invalid visibility value: #{visibility}" unless [:staff, :public].include?(visibility)
  validate_queries!
end

Instance Method Details

- (Object) build_query



12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# File 'common/advanced_query_builder.rb', line 12

def build_query
  query = if @queries.length > 1
    stack = @queries.reverse.clone

    while stack.length > 1
      a = stack.pop
      b = stack.pop

      stack.push(JSONModel(:boolean_query).from_hash({
                                                       :op => b["op"],
                                                       :subqueries => [as_subquery(a), as_subquery(b)]
                                                     }))
    end

    stack.pop
  else
    as_subquery(@queries[0])
  end

  JSONModel(:advanced_query).from_hash({"query" => query})
end