Class: ChewyQuery::Builder::Nodes::HasRelation
- Includes:
- Compose
- Defined in:
- lib/chewy_query/builder/nodes/has_relation.rb
Instance Method Summary collapse
- #__render__ ⇒ Object
- #filter(params = nil, &block) ⇒ Object
- #filter_mode(mode) ⇒ Object
-
#initialize(type, outer = nil) ⇒ HasRelation
constructor
A new instance of HasRelation.
- #query(params = nil, &block) ⇒ Object
- #query_mode(mode) ⇒ Object
Methods inherited from Expr
Methods inherited from Base
Constructor Details
#initialize(type, outer = nil) ⇒ HasRelation
Returns a new instance of HasRelation.
9 10 11 12 13 14 15 16 |
# File 'lib/chewy_query/builder/nodes/has_relation.rb', line 9 def initialize(type, outer = nil) @type = type.to_s @outer = outer @query_mode = :must @filter_mode = :and @queries = [] @filters = [] end |
Instance Method Details
#__render__ ⇒ Object
46 47 48 49 50 51 52 53 54 55 56 57 |
# File 'lib/chewy_query/builder/nodes/has_relation.rb', line 46 def __render__ queries = _queries_join(@queries, @query_mode) filters = _filters_join(@filters, @filter_mode) body = if filters && !queries { filter: filters } else _filtered_query(queries, filters) end || {} { _relation => body.merge(type: @type) } if body end |
#filter(params = nil, &block) ⇒ Object
37 38 39 40 41 42 43 44 |
# File 'lib/chewy_query/builder/nodes/has_relation.rb', line 37 def filter(params = nil, &block) if block @filters.push(ChewyQuery::Builder::Filters.new(@outer, &block).__render__) else @filters.push(params) end self end |
#filter_mode(mode) ⇒ Object
23 24 25 26 |
# File 'lib/chewy_query/builder/nodes/has_relation.rb', line 23 def filter_mode(mode) @filter_mode = mode self end |
#query(params = nil, &block) ⇒ Object
28 29 30 31 32 33 34 35 |
# File 'lib/chewy_query/builder/nodes/has_relation.rb', line 28 def query(params = nil, &block) if block raise 'Query DLS is not supported yet' else @queries.push(params) end self end |
#query_mode(mode) ⇒ Object
18 19 20 21 |
# File 'lib/chewy_query/builder/nodes/has_relation.rb', line 18 def query_mode(mode) @query_mode = mode self end |