Class: GraphQL::Schema::Directive::Flagged
- Inherits:
-
GraphQL::Schema::Directive
- Object
- Member
- GraphQL::Schema::Directive
- GraphQL::Schema::Directive::Flagged
- 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
Instance Method Summary collapse
-
#initialize(target, **options) ⇒ Flagged
constructor
A new instance of Flagged.
Methods inherited from GraphQL::Schema::Directive
default_directive, default_directive?, default_graphql_name, include?, locations, on_field?, on_fragment?, on_operation?, path, resolve, static_include?, to_graphql
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::CachedGraphQLDefinition
#graphql_definition, #initialize_copy, #type_class
Methods included from Relay::TypeExtensions
#connection_type, #define_connection, #define_edge, #edge_type
Methods included from Member::BaseDSLMethods
#accessible?, #authorized?, #default_graphql_name, #description, #graphql_name, #introspection, #introspection?, #mutation, #name, #overridden_graphql_name, #to_graphql, #visible?
Methods included from Member::BaseDSLMethods::ConfigurationExtension
Methods included from Member::TypeSystemHelpers
#kind, #list?, #non_null?, #to_list_type, #to_non_null_type, #to_type_signature
Methods included from Member::Scoped
Methods included from Member::RelayShortcuts
#connection_type, #connection_type_class, #edge_type, #edge_type_class
Methods included from Member::HasPath
Methods included from Member::HasAstNode
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, **) 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 |