Class: Chewy::Query::Nodes::HasRelation
- Includes:
- Compose
- Defined in:
- lib/chewy/query/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/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/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/nodes/has_relation.rb', line 37 def filter params = nil, &block if block @filters.push(Chewy::Query::Filters.new(@outer, &block).__render__) else @filters.push(params) end self end |
#filter_mode(mode) ⇒ Object
23 24 25 26 |
# File 'lib/chewy/query/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/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/nodes/has_relation.rb', line 18 def query_mode mode @query_mode = mode self end |