Class: Quo::Composing::QueryClassesStrategy

Inherits:
ClassStrategy show all
Defined in:
lib/quo/composing/query_classes_strategy.rb,
sig/generated/quo/composing/query_classes_strategy.rbs

Overview

Strategy for composing two Query classes

Instance Method Summary collapse

Methods inherited from ClassStrategy

#assign_query_metadata, #collect_properties, #create_composed_class, #validate_query_classes

Instance Method Details

#applicable?(left, right) ⇒ void

This method returns an undefined value.



15
16
17
18
19
# File 'lib/quo/composing/query_classes_strategy.rb', line 15

def applicable?(left, right)
  left.respond_to?(:<) && right.respond_to?(:<) &&
    (left < Quo::Query || left.is_a?(::ActiveRecord::Relation)) &&
    (right < Quo::Query || right.is_a?(::ActiveRecord::Relation))
end

#compose(chosen_superclass, left_query_class, right_query_class, joins: nil, left_spec: nil, right_spec: nil) ⇒ void

This method returns an undefined value.



29
30
31
32
33
34
35
# File 'lib/quo/composing/query_classes_strategy.rb', line 29

def compose(chosen_superclass, left_query_class, right_query_class, joins: nil, left_spec: nil, right_spec: nil)
  validate_query_classes(left_query_class, right_query_class)
  props = collect_properties(chosen_superclass, left_query_class, right_query_class)
  klass = create_composed_class(chosen_superclass, props)
  (klass, left_query_class, right_query_class, joins, left_spec, right_spec)
  klass
end