Skip to content

Commit 4ed32e4

Browse files
Memoize sourced_from update target resolution on Results
1 parent 2228134 commit 4ed32e4

2 files changed

Lines changed: 10 additions & 1 deletion

File tree

  • elasticgraph-schema_definition

elasticgraph-schema_definition/lib/elastic_graph/schema_definition/results.rb

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,11 @@ def derived_indexing_type_names
5555
.to_set
5656
end
5757

58+
# @private
59+
def sourced_update_targets_by_source_type_name
60+
@sourced_update_targets_by_source_type_name ||= Indexing::SourcedFromUpdateTargetsResolver.new(state).resolve
61+
end
62+
5863
private
5964

6065
def after_initialize
@@ -89,7 +94,9 @@ def build_dynamic_scripts
8994
end
9095

9196
def build_runtime_metadata
92-
sourced_update_targets_by_source_type_name = Indexing::SourcedFromUpdateTargetsResolver.new(state).resolve
97+
# Resolve `sourced_from` update targets before touching `all_types` so that `sourced_from`
98+
# validation errors take precedence over any errors raised while generating derived types.
99+
sourced_update_targets_by_source_type_name = self.sourced_update_targets_by_source_type_name
93100

94101
object_types_by_name = all_types
95102
.select { |t| t.respond_to?(:graphql_fields_by_name) }

elasticgraph-schema_definition/sig/elastic_graph/schema_definition/results.rbs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ module ElasticGraph
1212
def datastore_config: () -> ::Hash[::String, untyped]
1313
def runtime_metadata: () -> SchemaArtifacts::RuntimeMetadata::Schema
1414
def derived_indexing_type_names: () -> ::Set[::String]
15+
def sourced_update_targets_by_source_type_name: () -> ::Hash[::String, ::Array[SchemaArtifacts::RuntimeMetadata::UpdateTarget]]
1516

1617
@graphql_schema_string: ::String?
1718
@datastore_config: ::Hash[::String, untyped]
@@ -20,6 +21,7 @@ module ElasticGraph
2021
@no_circular_dependencies: bool?
2122
@field_path_resolver: SchemaElements::FieldPath::Resolver?
2223
@derived_indexing_type_names: ::Set[::String]?
24+
@sourced_update_targets_by_source_type_name: ::Hash[::String, ::Array[SchemaArtifacts::RuntimeMetadata::UpdateTarget]]?
2325

2426
STATIC_SCRIPT_REPO: Scripting::FileSystemRepository
2527

0 commit comments

Comments
 (0)