Class: GraphQLIncludable::Includes
- Inherits:
-
Object
- Object
- GraphQLIncludable::Includes
- Defined in:
- lib/graphql_includable/includes.rb
Instance Attribute Summary collapse
-
#included_children ⇒ Object
readonly
Returns the value of attribute included_children.
Instance Method Summary collapse
- #[](key) ⇒ Object
- #active_record_includes ⇒ Object
- #add_child(key) ⇒ Object
- #dig(*args) ⇒ Object
- #empty? ⇒ Boolean
-
#initialize(parent_attribute) ⇒ Includes
constructor
A new instance of Includes.
- #merge_includes(includes_manager) ⇒ Object
Constructor Details
#initialize(parent_attribute) ⇒ Includes
Returns a new instance of Includes.
5 6 7 8 |
# File 'lib/graphql_includable/includes.rb', line 5 def initialize(parent_attribute) @parent_attribute = parent_attribute @included_children = {} end |
Instance Attribute Details
#included_children ⇒ Object (readonly)
Returns the value of attribute included_children.
3 4 5 |
# File 'lib/graphql_includable/includes.rb', line 3 def included_children @included_children end |
Instance Method Details
#[](key) ⇒ Object
28 29 30 |
# File 'lib/graphql_includable/includes.rb', line 28 def [](key) @included_children[key] end |
#active_record_includes ⇒ Object
42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 |
# File 'lib/graphql_includable/includes.rb', line 42 def active_record_includes child_includes = {} child_includes_arr = [] @included_children.each do |key, value| if value.empty? child_includes_arr << key else active_record_includes = value.active_record_includes if active_record_includes.is_a?(Array) child_includes_arr += active_record_includes else child_includes.merge!(active_record_includes) end end end if child_includes_arr.present? child_includes_arr << child_includes if child_includes.present? child_includes = child_includes_arr end return child_includes if @parent_attribute.nil? { @parent_attribute => child_includes } end |
#add_child(key) ⇒ Object
10 11 12 13 14 15 |
# File 'lib/graphql_includable/includes.rb', line 10 def add_child(key) return @included_children[key] if @included_children.key?(key) manager = Includes.new(key) @included_children[key] = manager manager end |
#dig(*args) ⇒ Object
32 33 34 35 36 |
# File 'lib/graphql_includable/includes.rb', line 32 def dig(*args) args = args[0] if args.length == 1 && args[0].is_a?(Array) return @included_children if args.empty? @included_children.dig(*args) end |
#empty? ⇒ Boolean
38 39 40 |
# File 'lib/graphql_includable/includes.rb', line 38 def empty? @included_children.empty? end |
#merge_includes(includes_manager) ⇒ Object
17 18 19 20 21 22 23 24 25 26 |
# File 'lib/graphql_includable/includes.rb', line 17 def merge_includes(includes_manager) includes_manager.included_children.each do |key, manager| included_children[key] = if included_children.key?(key) included_children[key].merge_includes(manager) else manager end end self end |