Class: GraphQL::Schema::Directive::Flagged

Inherits:
GraphQL::Schema::Directive show all
Defined in:
lib/graphql/schema/directive/flagged.rb

Overview

This is similar to Feature, except it’s prescribed by the server, not the client.

In this case, the server hides types and fields entirely, unless the current context has certain :flags present.

Defined Under Namespace

Modules: VisibleByFlag

Constant Summary

Constants inherited from GraphQL::Schema::Directive

DEFAULT_DEPRECATION_REASON, LOCATIONS, LOCATION_DESCRIPTIONS

Constants included from Member::HasArguments

Member::HasArguments::NO_ARGUMENTS

Constants included from Member::HasDirectives

Member::HasDirectives::NO_DIRECTIVES

Constants included from Member::GraphQLTypeNames

Member::GraphQLTypeNames::Boolean, Member::GraphQLTypeNames::ID, Member::GraphQLTypeNames::Int

Instance Attribute Summary

Attributes inherited from GraphQL::Schema::Directive

#arguments, #owner

Instance Method Summary collapse

Methods inherited from GraphQL::Schema::Directive

default_directive, default_directive?, default_graphql_name, #graphql_name, include?, locations, on_field?, on_fragment?, on_operation?, path, repeatable, repeatable?, resolve, resolve_each, static_include?

Methods included from Member::HasArguments

#add_argument, #all_argument_definitions, #argument, #argument_class, #arguments, #arguments_statically_coercible?, #coerce_arguments, #get_argument, #own_arguments, #validate_directive_argument

Methods included from Member::BaseDSLMethods

#accessible?, #authorized?, #default_graphql_name, #description, #graphql_name, #introspection, #introspection?, #mutation, #name, #overridden_graphql_name, #visible?

Methods included from Member::BaseDSLMethods::ConfigurationExtension

#inherited

Methods included from Member::TypeSystemHelpers

#kind, #list?, #non_null?, #to_list_type, #to_non_null_type, #to_type_signature

Methods included from Member::Scoped

#scope_items

Methods included from Member::RelayShortcuts

#connection_type, #connection_type_class, #edge_type, #edge_type_class

Methods included from Member::HasPath

#path

Methods included from Member::HasAstNode

#ast_node

Methods included from Member::HasDirectives

#directive, #directives, #remove_directive

Constructor Details

#initialize(target, **options) ⇒ Flagged

Returns a new instance of Flagged.



9
10
11
12
13
14
15
16
17
18
19
20
21
# File 'lib/graphql/schema/directive/flagged.rb', line 9

def initialize(target, **options)
  if target.is_a?(Module) && !target.ancestors.include?(VisibleByFlag)
    # This is type class of some kind, `include` will put this module
    # in between the type class itself and its super class, so `super` will work fine
    target.include(VisibleByFlag)
  elsif !target.is_a?(VisibleByFlag)
    # This is an instance of a base class. `include` won't put this in front of the
    # base class implementation, so we need to `.prepend`.
    # `#visible?` could probably be moved to a module and then this could use `include` instead.
    target.class.prepend(VisibleByFlag)
  end
  super
end