Class: GraphqlMigrateExecution::DataloaderShorthand
- Defined in:
- lib/graphql_migrate_execution/dataloader_shorthand.rb
Overview
These fields can use a ‘dataload: …` configuration. They use a single, simple dataloader call:
-
‘dataload_assocation(…)`
-
‘dataload_record(…)`
-
‘dataload(…)` or `dataloader.with(…).load(…)`
and they don’t make calls on ‘self` inside those expressions (except for `object` and `context`).
Constant Summary
Constants inherited from Strategy
Instance Method Summary collapse
Methods inherited from Strategy
#initialize, prefix_if_necessary, #run, strategy_name
Constructor Details
This class inherits a constructor from GraphqlMigrateExecution::Strategy
Instance Method Details
#cleanup(field_definition) ⇒ Object
34 35 36 |
# File 'lib/graphql_migrate_execution/dataloader_shorthand.rb', line 34 def cleanup(field_definition) remove_resolver_method(field_definition) end |
#migrate(field_definition) ⇒ Object
13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
# File 'lib/graphql_migrate_execution/dataloader_shorthand.rb', line 13 def migrate(field_definition) rm = field_definition.resolver_method if (da = rm.dataload_association) dataload_config = "{ association: #{da.inspect} }" elsif (dr = rm.dataload_record) dataload_config = "{ model: #{dr}".dup if (dr_using = rm.dataload_record_using) dataload_config << ", using: #{dr_using.inspect}" end if (fb = rm.dataload_record_find_by) dataload_config << ", find_by: #{fb.inspect}" end dataload_config << " }" elsif rm.source_arg_nodes.empty? dataload_config = rm.source_class_node.full_name else dataload_config = "{ with: #{rm.source_class_node.full_name}, by: [#{rm.source_arg_nodes.map { |n| Visitor.source_for_constant_node(n) }.join(", ")}] }" end inject_field_keyword(field_definition, :dataload, dataload_config) end |