Module: Quo::Composing
- Defined in:
- lib/quo/composing.rb,
lib/quo/composing/base_strategy.rb,
lib/quo/composing/class_strategy.rb,
lib/quo/composing/query_classes_strategy.rb,
lib/quo/composing/class_strategy_registry.rb,
sig/generated/quo/composing.rbs,
sig/generated/quo/composing/base_strategy.rbs,
sig/generated/quo/composing/class_strategy.rbs,
sig/generated/quo/composing/query_classes_strategy.rbs,
sig/generated/quo/composing/class_strategy_registry.rbs
Defined Under Namespace
Classes: BaseStrategy, ClassStrategy, ClassStrategyRegistry, QueryClassesStrategy
Constant Summary
collapse
- CLASS_STRATEGY_REGISTRY =
ClassStrategyRegistry.new
Class Method Summary
collapse
Class Method Details
.composer(chosen_superclass, left_query_class, right_query_class, joins: nil, left_spec: nil, right_spec: nil) ⇒ Class & Quo::ComposedQuery
19
20
21
22
|
# File 'lib/quo/composing.rb', line 19
def composer(chosen_superclass, left_query_class, right_query_class, joins: nil, left_spec: nil, right_spec: nil)
strategy = CLASS_STRATEGY_REGISTRY.find_strategy(left_query_class, right_query_class)
strategy.compose(chosen_superclass, left_query_class, right_query_class, joins: joins, left_spec: left_spec, right_spec: right_spec)
end
|
.merge_instances(left_instance, right_instance, joins: nil) ⇒ Quo::Query
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
|
# File 'lib/quo/composing.rb', line 28
def merge_instances(left_instance, right_instance, joins: nil)
page, page_size = (left_instance, right_instance)
transformer = inherited_transformer(left_instance, right_instance)
opts = {left: left_instance, right: right_instance, merge_joins: joins}
opts[:page] = page if page
opts[:page_size] = page_size if page_size
composed = if relation_backed?(left_instance) || relation_backed?(right_instance)
Quo::ComposedRelationBackedQuery.new(**opts)
else
Quo::ComposedCollectionBackedQuery.new(**opts)
end
composed.transform(&transformer) if transformer
composed
end
|