Class: GraphQL::Models::Instrumentation
- Inherits:
-
Object
- Object
- GraphQL::Models::Instrumentation
- Defined in:
- lib/graphql/models/instrumentation.rb
Instance Method Summary collapse
-
#initialize(skip_nil_models = true) ⇒ Instrumentation
constructor
A new instance of Instrumentation.
- #instrument(type, field) ⇒ Object
Constructor Details
#initialize(skip_nil_models = true) ⇒ Instrumentation
Returns a new instance of Instrumentation.
4 5 6 |
# File 'lib/graphql/models/instrumentation.rb', line 4 def initialize(skip_nil_models = true) @skip_nil_models = skip_nil_models end |
Instance Method Details
#instrument(type, field) ⇒ Object
8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
# File 'lib/graphql/models/instrumentation.rb', line 8 def instrument(type, field) field_info = GraphQL::Models.field_info(type, field.name) return field unless field_info old_resolver = field.resolve_proc new_resolver = -> (object, args, ctx) { base_model = field_info.object_to_base_model.call(object) GraphQL::Models.load_association(base_model, field_info.path, ctx).then do |model| next nil if model.nil? && @skip_nil_models old_resolver.call(model, args, ctx) end } field.redefine do resolve(new_resolver) end end |