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
43 44 45 46 47 48 49 50 51 52 53 54 55 |
# File 'lib/chewy/query/nodes/has_relation.rb', line 43 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 body ||= {} {_relation => body.merge(type: @type)} end |
#filter(params = nil, &block) ⇒ Object
34 35 36 37 38 39 40 41 |
# File 'lib/chewy/query/nodes/has_relation.rb', line 34 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 |
# File 'lib/chewy/query/nodes/has_relation.rb', line 28 def query(params = nil, &block) raise 'Query DLS is not supported yet' if block @queries.push(params) 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 |