Module: ElasticGraph::SchemaDefinition::Mixins::HasDerivedGraphQLTypeCustomizations
- Included in:
- SchemaElements::EnumType, SchemaElements::ScalarType, SchemaElements::TypeWithSubfields, SchemaElements::UnionType
- Defined in:
- lib/elastic_graph/schema_definition/mixins/has_derived_graphql_type_customizations.rb
Overview
Mixin that supports the customization of derived GraphQL types.
For each type you define, ElasticGraph generates a number of derived GraphQL types that are needed to facilitate the ElasticGraph Query API. Methods in this module can be used to customize those derived GraphQL types.
Instance Method Summary collapse
-
#customize_derived_type_fields(type_name, *field_names, &customization_block) ⇒ void
Registers a customization block for the named fields on the named derived GraphQL type.
-
#customize_derived_types(*type_names, &customization_block) ⇒ void
Registers a customization block for the named derived graphql types.
- #derived_field_customizations_by_name_for_type(type) ⇒ Object
- #derived_field_customizations_by_type_and_field_name ⇒ Object
- #derived_type_customizations_by_name ⇒ Object
- #derived_type_customizations_for_type(type) ⇒ Object
Instance Method Details
#customize_derived_type_fields(type_name, *field_names, &customization_block) ⇒ void
This method returns an undefined value.
Registers a customization block for the named fields on the named derived GraphQL type. The provided block will get run on the named fields of the named derived GraphQL type, allowing them to be customized.
77 78 79 80 81 82 83 |
# File 'lib/elastic_graph/schema_definition/mixins/has_derived_graphql_type_customizations.rb', line 77 def customize_derived_type_fields(type_name, *field_names, &customization_block) customizations_by_field = derived_field_customizations_by_type_and_field_name[type_name] field_names.each do |field_name| customizations_by_field[field_name] << customization_block end end |
#customize_derived_types(*type_names, &customization_block) ⇒ void
This method returns an undefined value.
Registers a customization block for the named derived graphql types. The provided block will get run on the named derived GraphQL types, allowing them to be customized.
48 49 50 51 52 53 54 55 56 |
# File 'lib/elastic_graph/schema_definition/mixins/has_derived_graphql_type_customizations.rb', line 48 def customize_derived_types(*type_names, &customization_block) if type_names.include?(:all) derived_type_customizations_for_all_types << customization_block else type_names.each do |t| derived_type_customizations_by_name[t.to_s] << customization_block end end end |
#derived_field_customizations_by_name_for_type(type) ⇒ Object
91 92 93 |
# File 'lib/elastic_graph/schema_definition/mixins/has_derived_graphql_type_customizations.rb', line 91 def derived_field_customizations_by_name_for_type(type) derived_field_customizations_by_type_and_field_name[type.name] end |
#derived_field_customizations_by_type_and_field_name ⇒ Object
103 104 105 106 107 108 109 |
# File 'lib/elastic_graph/schema_definition/mixins/has_derived_graphql_type_customizations.rb', line 103 def derived_field_customizations_by_type_and_field_name @derived_field_customizations_by_type_and_field_name ||= ::Hash.new do |outer_hash, type| outer_hash[type] = ::Hash.new do |inner_hash, field_name| inner_hash[field_name] = [] end end end |
#derived_type_customizations_by_name ⇒ Object
96 97 98 99 100 |
# File 'lib/elastic_graph/schema_definition/mixins/has_derived_graphql_type_customizations.rb', line 96 def derived_type_customizations_by_name @derived_type_customizations_by_name ||= ::Hash.new do |hash, type_name| hash[type_name] = [] end end |
#derived_type_customizations_for_type(type) ⇒ Object
86 87 88 |
# File 'lib/elastic_graph/schema_definition/mixins/has_derived_graphql_type_customizations.rb', line 86 def derived_type_customizations_for_type(type) derived_type_customizations_by_name[type.name] + derived_type_customizations_for_all_types end |