Class: Desiru::GraphQL::ModuleLoader
- Inherits:
-
GraphQL::Dataloader::Source
- Object
- GraphQL::Dataloader::Source
- Desiru::GraphQL::ModuleLoader
- Defined in:
- lib/desiru/graphql/batch_loader.rb
Overview
Module loader that provides batch loading for Desiru modules
Instance Method Summary collapse
- #fetch(args_array) ⇒ Object
-
#initialize(operation_name, modules) ⇒ ModuleLoader
constructor
A new instance of ModuleLoader.
Constructor Details
#initialize(operation_name, modules) ⇒ ModuleLoader
Returns a new instance of ModuleLoader.
28 29 30 31 32 |
# File 'lib/desiru/graphql/batch_loader.rb', line 28 def initialize(operation_name, modules) super() @operation_name = operation_name @modules = modules end |
Instance Method Details
#fetch(args_array) ⇒ Object
34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 |
# File 'lib/desiru/graphql/batch_loader.rb', line 34 def fetch(args_array) module_instance = @modules[@operation_name.to_s] || @modules[@operation_name.to_sym] raise "Module not found for operation: #{@operation_name}" unless module_instance # Transform GraphQL arguments to snake_case transformed_args = args_array.map { |args| transform_graphql_args(args) } results = if module_instance.respond_to?(:batch_forward) # Batch process all requests module_instance.batch_forward(transformed_args) else # Fall back to individual processing transformed_args.map { |args| module_instance.call(args) } end # Transform results back to camelCase results.map { |result| transform_module_result(result) } end |