Class: ElasticGraph::SchemaDefinition::Indexing::JSONSchemaWithMetadata::Merger
- Inherits:
-
Object
- Object
- ElasticGraph::SchemaDefinition::Indexing::JSONSchemaWithMetadata::Merger
- Defined in:
- lib/elastic_graph/schema_definition/indexing/json_schema_with_metadata.rb
Overview
Responsible for building ‘JSONSchemaWithMetadata` instances.
Defined Under Namespace
Classes: JSONSchemaResolver
Instance Attribute Summary collapse
-
#unused_deprecated_elements ⇒ Object
readonly
Returns the value of attribute unused_deprecated_elements.
Instance Method Summary collapse
-
#initialize(schema_def_results) ⇒ Merger
constructor
A new instance of Merger.
- #merge_metadata_into(json_schema) ⇒ Object
Constructor Details
#initialize(schema_def_results) ⇒ Merger
Returns a new instance of Merger.
42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 |
# File 'lib/elastic_graph/schema_definition/indexing/json_schema_with_metadata.rb', line 42 def initialize(schema_def_results) @field_metadata_by_type_and_field_name = schema_def_results. @renamed_types_by_old_name = schema_def_results.state.renamed_types_by_old_name @deleted_types_by_old_name = schema_def_results.state.deleted_types_by_old_name @renamed_fields_by_type_name_and_old_field_name = schema_def_results.state.renamed_fields_by_type_name_and_old_field_name @deleted_fields_by_type_name_and_old_field_name = schema_def_results.state.deleted_fields_by_type_name_and_old_field_name @state = schema_def_results.state @derived_indexing_type_names = schema_def_results.derived_indexing_type_names @unused_deprecated_elements = ( @renamed_types_by_old_name.values + @deleted_types_by_old_name.values + @renamed_fields_by_type_name_and_old_field_name.values.flat_map(&:values) + @deleted_fields_by_type_name_and_old_field_name.values.flat_map(&:values) ).to_set end |
Instance Attribute Details
#unused_deprecated_elements ⇒ Object (readonly)
Returns the value of attribute unused_deprecated_elements.
40 41 42 |
# File 'lib/elastic_graph/schema_definition/indexing/json_schema_with_metadata.rb', line 40 def unused_deprecated_elements @unused_deprecated_elements end |
Instance Method Details
#merge_metadata_into(json_schema) ⇒ Object
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 98 99 100 101 102 103 104 105 106 107 108 109 |
# File 'lib/elastic_graph/schema_definition/indexing/json_schema_with_metadata.rb', line 59 def (json_schema) missing_fields = ::Set.new missing_types = ::Set.new definition_conflicts = ::Set.new old_type_name_by_current_name = {} # : ::Hash[String, String] defs = json_schema.fetch("$defs").to_h do |type_name, type_def| if type_name != EVENT_ENVELOPE_JSON_SCHEMA_NAME && (properties = type_def["properties"]) current_type_name = determine_current_type_name( type_name, missing_types: missing_types, definition_conflicts: definition_conflicts ) if current_type_name old_type_name_by_current_name[current_type_name] = type_name end properties = properties.to_h do |field_name, prop| unless field_name == "__typename" = current_type_name&.then do |name| ( name, field_name, missing_fields: missing_fields, definition_conflicts: definition_conflicts ) end prop = prop.merge({"ElasticGraph" => &.to_dumpable_hash}) end [field_name, prop] end type_def = type_def.merge({"properties" => properties}) end [type_name, type_def] end json_schema = json_schema.merge("$defs" => defs) JSONSchemaWithMetadata.new( json_schema: json_schema, missing_fields: missing_fields, missing_types: missing_types, definition_conflicts: definition_conflicts, missing_necessary_fields: identify_missing_necessary_fields(json_schema, old_type_name_by_current_name) ) end |