module GraphQL::Schema::Member::HasFields::InterfaceMethods
Public Instance Methods
# File lib/graphql/schema/member/has_fields.rb, line 269 def fields(context = GraphQL::Query::NullContext.instance) warden = Warden.from_context(context) # Local overrides take precedence over inherited fields visible_fields = {} all_ancestors = ancestors #: Array[untyped] for ancestor in all_ancestors if ancestor.respond_to?(:own_fields) ancestor.own_fields.each do |field_name, fields_entry| # Choose the most local definition that passes `.visible?` -- # stop checking for fields by name once one has been found. if !visible_fields.key?(field_name) && (f = Warden.visible_entry?(:visible_field?, fields_entry, context, warden)) visible_fields[field_name] = f.ensure_loaded end end end end visible_fields end
Returns
-
Hash<String => GraphQL::Schema::Field>— Fields on this object, keyed by name, including inherited fields
# File lib/graphql/schema/member/has_fields.rb, line 249 def get_field(field_name, context = GraphQL::Query::NullContext.instance) warden = Warden.from_context(context) skip_visible = context.respond_to?(:types) && context.types.is_a?(GraphQL::Schema::Visibility::Profile) all_ancestors = ancestors #: Array[untyped] for ancestor in all_ancestors if ancestor.respond_to?(:own_fields) && (f_entry = ancestor.own_fields[field_name]) && (skip_visible || (f_entry = Warden.visible_entry?(:visible_field?, f_entry, context, warden))) return f_entry end end nil end