class GraphqlLazyLoad::Custom
Attributes
value[R]
Public Class Methods
new(type, unique_identifier, value, default_value: nil, **params, &block)
click to toggle source
# File lib/graphql_lazy_load/custom.rb, line 5 def initialize(type, unique_identifier, value, default_value: nil, **params, &block) context_key = [type.class, unique_identifier, params] @value = value # Initialize the loading state for this query, # or get the previously-initiated state @lazy = type.context[context_key] ||= { values: Set.new, results: Hash.new(default_value), params: params, block: block, } # Register this to be loaded later unless we've already queued or loaded it return if already_loaded_or_queued? lazy_values.add(value) end
Public Instance Methods
result()
click to toggle source
Return the loaded record, hitting the database if needed
# File lib/graphql_lazy_load/custom.rb, line 22 def result if not_already_loaded? && any_to_load? lazy_results.merge!(block_results) lazy_values.clear end lazy_results[value] end
Private Instance Methods
already_loaded_or_queued?()
click to toggle source
# File lib/graphql_lazy_load/custom.rb, line 45 def already_loaded_or_queued? lazy_values.include?(value) || lazy_results.key?(value) end
any_to_load?()
click to toggle source
# File lib/graphql_lazy_load/custom.rb, line 53 def any_to_load? lazy_values.any? end
block_results()
click to toggle source
# File lib/graphql_lazy_load/custom.rb, line 33 def block_results lazy_block.call(lazy_values.to_a, lazy_params) end
lazy_block()
click to toggle source
# File lib/graphql_lazy_load/custom.rb, line 41 def lazy_block @lazy[:block] end
lazy_params()
click to toggle source
# File lib/graphql_lazy_load/custom.rb, line 37 def lazy_params @lazy[:params] end
lazy_results()
click to toggle source
# File lib/graphql_lazy_load/custom.rb, line 65 def lazy_results @lazy[:results] end
lazy_values()
click to toggle source
# File lib/graphql_lazy_load/custom.rb, line 61 def lazy_values @lazy[:values] end
lazy_values_array()
click to toggle source
# File lib/graphql_lazy_load/custom.rb, line 57 def lazy_values_array lazy_values.to_a end
not_already_loaded?()
click to toggle source
# File lib/graphql_lazy_load/custom.rb, line 49 def not_already_loaded? !lazy_results.key?(value) end