Class: ElasticGraph::SchemaArtifacts::RuntimeMetadata::Schema
- Inherits:
-
Object
- Object
- ElasticGraph::SchemaArtifacts::RuntimeMetadata::Schema
- Defined in:
- elasticgraph-schema_artifacts/lib/elastic_graph/schema_artifacts/runtime_metadata/schema.rb
Overview
Entry point for runtime metadata for an entire schema.
Class Method Summary collapse
-
.from_hash(hash) ⇒ Schema
Loads a Schema from the given hash.
Instance Method Summary collapse
-
#to_dumpable_hash ⇒ Hash<String, Hash<String, Object>>
Converts to a hash that is suitable for dumping to disk as YAML.
Class Method Details
.from_hash(hash) ⇒ Schema
Loads a ElasticGraph::SchemaArtifacts::RuntimeMetadata::Schema from the given hash.
57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 |
# File 'elasticgraph-schema_artifacts/lib/elastic_graph/schema_artifacts/runtime_metadata/schema.rb', line 57 def self.from_hash(hash) object_types_by_name = hash[OBJECT_TYPES_BY_NAME]&.transform_values do |type_hash| ObjectType.from_hash(type_hash) end || {} scalar_types_by_name = hash[SCALAR_TYPES_BY_NAME]&.then do |subhash| ScalarType.load_many(subhash) end || {} enum_types_by_name = hash[ENUM_TYPES_BY_NAME]&.transform_values do |type_hash| Enum::Type.from_hash(type_hash) end || {} index_definitions_by_name = hash[INDEX_DEFINITIONS_BY_NAME]&.transform_values do |index_hash| IndexDefinition.from_hash(index_hash) end || {} schema_element_names = SchemaElementNames.from_hash(hash.fetch(SCHEMA_ELEMENT_NAMES)) graphql_extension_modules = hash[GRAPHQL_EXTENSION_MODULES]&.map do |ext_mod_hash| GraphQLExtension.from_hash(ext_mod_hash) end || [] graphql_resolvers_by_name = hash[GRAPHQL_RESOLVERS_BY_NAME]&.to_h do |name, resolver_hash| [name.to_sym, GraphQLResolver.from_hash(resolver_hash)] end || {} static_script_ids_by_scoped_name = hash[STATIC_SCRIPT_IDS_BY_NAME] || {} new( object_types_by_name: object_types_by_name, scalar_types_by_name: scalar_types_by_name, enum_types_by_name: enum_types_by_name, index_definitions_by_name: index_definitions_by_name, schema_element_names: schema_element_names, graphql_extension_modules: graphql_extension_modules, graphql_resolvers_by_name: graphql_resolvers_by_name, static_script_ids_by_scoped_name: static_script_ids_by_scoped_name ) end |
Instance Method Details
#to_dumpable_hash ⇒ Hash<String, Hash<String, Object>>
Converts to a hash that is suitable for dumping to disk as YAML.
102 103 104 105 106 107 108 109 110 111 112 113 114 |
# File 'elasticgraph-schema_artifacts/lib/elastic_graph/schema_artifacts/runtime_metadata/schema.rb', line 102 def to_dumpable_hash Support::HashUtil.recursively_prune_nils_and_empties_from({ # Keys here are ordered alphabetically; please keep them that way. ENUM_TYPES_BY_NAME => HashDumper.dump_hash(enum_types_by_name, &:to_dumpable_hash), GRAPHQL_EXTENSION_MODULES => graphql_extension_modules.map(&:to_dumpable_hash), GRAPHQL_RESOLVERS_BY_NAME => HashDumper.dump_hash(graphql_resolvers_by_name.transform_keys(&:to_s), &:to_dumpable_hash), INDEX_DEFINITIONS_BY_NAME => HashDumper.dump_hash(index_definitions_by_name, &:to_dumpable_hash), OBJECT_TYPES_BY_NAME => HashDumper.dump_hash(object_types_by_name, &:to_dumpable_hash), SCALAR_TYPES_BY_NAME => HashDumper.dump_hash(scalar_types_by_name, &:to_dumpable_hash), SCHEMA_ELEMENT_NAMES => schema_element_names.to_dumpable_hash, STATIC_SCRIPT_IDS_BY_NAME => static_script_ids_by_scoped_name }) end |