Class: ElasticGraph::SchemaDefinition::Results

Inherits:
Object
  • Object
show all
Includes:
SchemaArtifacts::ArtifactsHelperMethods
Defined in:
lib/elastic_graph/schema_definition/results.rb

Overview

Note:

This class is designed to implement the same interface as ‘ElasticGraph::SchemaArtifacts::FromDisk`, so that it can be used

Provides the results of defining a schema.

interchangeably with schema artifacts loaded from disk. This allows the artifacts to be used in tests without having to dump them or reload them.

Constant Summary collapse

STATIC_SCRIPT_REPO =
Scripting::FileSystemRepository.new(::File.join(__dir__.to_s, "scripting", "scripts"))

Instance Method Summary collapse

Instance Method Details

#available_json_schema_versionsSet<Integer>

Returns set of available JSON schema versions.

Returns:

  • (Set<Integer>)

    set of available JSON schema versions



60
61
62
# File 'lib/elastic_graph/schema_definition/results.rb', line 60

def available_json_schema_versions
  @available_json_schema_versions ||= Set[latest_json_schema_version]
end

#current_public_json_schemaObject



81
82
83
# File 'lib/elastic_graph/schema_definition/results.rb', line 81

def current_public_json_schema
  @current_public_json_schema ||= build_public_json_schema
end

#datastore_configHash<String, Object>

Returns the Elasticsearch/OpenSearch configuration dumped as ‘datastore_config.yaml`.

Returns:

  • (Hash<String, Object>)

    the Elasticsearch/OpenSearch configuration dumped as ‘datastore_config.yaml`



39
40
41
# File 'lib/elastic_graph/schema_definition/results.rb', line 39

def datastore_config
  @datastore_config ||= generate_datastore_config
end

#derived_indexing_type_namesObject



99
100
101
102
103
104
105
# File 'lib/elastic_graph/schema_definition/results.rb', line 99

def derived_indexing_type_names
  @derived_indexing_type_names ||= state
    .object_types_by_name
    .values
    .flat_map { |type| type.derived_indexed_types.map { |dit| dit.destination_type_ref.name } }
    .to_set
end

#graphql_schema_stringString

Returns the generated GraphQL SDL schema string dumped as ‘schema.graphql`.

Returns:

  • (String)

    the generated GraphQL SDL schema string dumped as ‘schema.graphql`



34
35
36
# File 'lib/elastic_graph/schema_definition/results.rb', line 34

def graphql_schema_string
  @graphql_schema_string ||= generate_sdl
end

#json_schema_field_metadata_by_type_and_field_nameObject



75
76
77
78
# File 'lib/elastic_graph/schema_definition/results.rb', line 75

def 
  @json_schema_field_metadata_by_type_and_field_name ||= json_schema_indexing_field_types_by_name
    .transform_values(&:json_schema_field_metadata_by_field_name)
end

#json_schema_version_setter_locationObject



70
71
72
# File 'lib/elastic_graph/schema_definition/results.rb', line 70

def json_schema_version_setter_location
  state.json_schema_version_setter_location
end

#json_schemas_for(version) ⇒ Hash<String, Object>

Returns the JSON schema for the requested version, if available.

Parameters:

  • version (Integer)

    desired JSON schema version

Returns:

  • (Hash<String, Object>)

    the JSON schema for the requested version, if available

Raises:

  • (Errors::NotFoundError)

    if the requested JSON schema version is not available



51
52
53
54
55
56
57
# File 'lib/elastic_graph/schema_definition/results.rb', line 51

def json_schemas_for(version)
  unless available_json_schema_versions.include?(version)
    raise Errors::NotFoundError, "The requested json schema version (#{version}) is not available. Available versions: #{available_json_schema_versions.to_a.join(", ")}."
  end

  @latest_versioned_json_schema ||= (current_public_json_schema).json_schema
end

#latest_json_schema_versionHash<String, Object>

Returns the newly generated JSON schema.

Returns:

  • (Hash<String, Object>)

    the newly generated JSON schema



65
66
67
# File 'lib/elastic_graph/schema_definition/results.rb', line 65

def latest_json_schema_version
  current_public_json_schema[JSON_SCHEMA_VERSION_KEY]
end

#merge_field_metadata_into_json_schema(json_schema) ⇒ Object



86
87
88
# File 'lib/elastic_graph/schema_definition/results.rb', line 86

def (json_schema)
  .(json_schema)
end

#runtime_metadataHash<String, Object>

Returns runtime metadata used by other parts of ElasticGraph and dumped as ‘runtime_metadata.yaml`.

Returns:

  • (Hash<String, Object>)

    runtime metadata used by other parts of ElasticGraph and dumped as ‘runtime_metadata.yaml`



44
45
46
# File 'lib/elastic_graph/schema_definition/results.rb', line 44

def 
  @runtime_metadata ||= 
end

#unused_deprecated_elementsObject



91
92
93
# File 'lib/elastic_graph/schema_definition/results.rb', line 91

def unused_deprecated_elements
  .unused_deprecated_elements
end