elasticgraph-schema_definition 0.18.0.4 → 0.18.0.5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (26) hide show
  1. checksums.yaml +4 -4
  2. data/lib/elastic_graph/schema_definition/api.rb +4 -4
  3. data/lib/elastic_graph/schema_definition/factory.rb +1 -4
  4. data/lib/elastic_graph/schema_definition/indexing/derived_indexed_type.rb +2 -2
  5. data/lib/elastic_graph/schema_definition/indexing/field_type/object.rb +2 -2
  6. data/lib/elastic_graph/schema_definition/indexing/index.rb +5 -5
  7. data/lib/elastic_graph/schema_definition/mixins/has_subtypes.rb +3 -3
  8. data/lib/elastic_graph/schema_definition/mixins/has_type_info.rb +2 -2
  9. data/lib/elastic_graph/schema_definition/mixins/implements_interfaces.rb +2 -2
  10. data/lib/elastic_graph/schema_definition/mixins/verifies_graphql_name.rb +2 -2
  11. data/lib/elastic_graph/schema_definition/results.rb +10 -10
  12. data/lib/elastic_graph/schema_definition/schema_elements/built_in_types.rb +11 -44
  13. data/lib/elastic_graph/schema_definition/schema_elements/enum_type.rb +3 -3
  14. data/lib/elastic_graph/schema_definition/schema_elements/enum_value_namer.rb +2 -2
  15. data/lib/elastic_graph/schema_definition/schema_elements/field.rb +32 -13
  16. data/lib/elastic_graph/schema_definition/schema_elements/object_type.rb +1 -1
  17. data/lib/elastic_graph/schema_definition/schema_elements/relationship.rb +2 -2
  18. data/lib/elastic_graph/schema_definition/schema_elements/scalar_type.rb +2 -2
  19. data/lib/elastic_graph/schema_definition/schema_elements/type_namer.rb +7 -7
  20. data/lib/elastic_graph/schema_definition/schema_elements/type_reference.rb +4 -4
  21. data/lib/elastic_graph/schema_definition/schema_elements/type_with_subfields.rb +3 -4
  22. data/lib/elastic_graph/schema_definition/schema_elements/union_type.rb +3 -3
  23. data/lib/elastic_graph/schema_definition/scripting/file_system_repository.rb +5 -5
  24. data/lib/elastic_graph/schema_definition/state.rb +4 -4
  25. data/lib/elastic_graph/schema_definition/test_support.rb +2 -2
  26. metadata +22 -20
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 5627aa4be4d0968f9d34d9374b4423713c2cba88e5bbfbc4a4fedea676a906f7
4
- data.tar.gz: e04375010eb75f80087bb3396da2915de2a6d78f9c17840a9861a33790efb75e
3
+ metadata.gz: 7bb25d1889af5a97e059d9e3f676b0b3afa2bb42d3669f26a3185edf9a931744
4
+ data.tar.gz: b7a7a8f7dbb7992925aedb81aa75e12581966f0b2012e831162719fbd4e985f1
5
5
  SHA512:
6
- metadata.gz: 4e0cfe74e08755d2886f7fd0aedc037b6999d170e1b377a51a29b4774a39b31e51693af4700e0ea8d37133c14fb57739a5ba4b51155b22aeb69148248a07ddbb
7
- data.tar.gz: f35700ff04061b51e997137cee5628bc258fdaa12aa8871ea5ad6dca1de4858ba979b6d78868fe6194d8e3e44623816e2aea10893a195ae8be766b3ee6222da6
6
+ metadata.gz: 98d5092178638c639a5e17207d74533db9de54bc423ae7e5889dd0ae8b1db9e41446d9f516dcdcad9306cf48310a51f14f19edbd0aac55670ad393f8bee51579
7
+ data.tar.gz: d55858c4a7bba00679c6bbc07ee2f1a8d3820858eb2d5b3e5d1855d4acba9829b3cefa540bdfce3143d341949bb24677cb00c87d5c236963e4c0f219e2102434
@@ -6,7 +6,7 @@
6
6
  #
7
7
  # frozen_string_literal: true
8
8
 
9
- require "elastic_graph/error"
9
+ require "elastic_graph/errors"
10
10
  require "elastic_graph/schema_artifacts/runtime_metadata/extension"
11
11
  require "elastic_graph/schema_definition/mixins/has_readable_to_s_and_inspect"
12
12
  require "elastic_graph/schema_definition/results"
@@ -26,7 +26,7 @@ module ElasticGraph
26
26
  if (api_instance = ::Thread.current[:ElasticGraph_SchemaDefinition_API_instance])
27
27
  yield api_instance
28
28
  else
29
- raise SchemaError, "No active `SchemaDefinition::API` instance is available. " \
29
+ raise Errors::SchemaError, "No active `SchemaDefinition::API` instance is available. " \
30
30
  "Let ElasticGraph load the schema definition files."
31
31
  end
32
32
  end
@@ -314,11 +314,11 @@ module ElasticGraph
314
314
  # end
315
315
  def json_schema_version(version)
316
316
  if !version.is_a?(Integer) || version < 1
317
- raise SchemaError, "`json_schema_version` must be a positive integer. Specified version: #{version}"
317
+ raise Errors::SchemaError, "`json_schema_version` must be a positive integer. Specified version: #{version}"
318
318
  end
319
319
 
320
320
  if @state.json_schema_version
321
- raise SchemaError, "`json_schema_version` can only be set once on a schema. Previously-set version: #{@state.json_schema_version}"
321
+ raise Errors::SchemaError, "`json_schema_version` can only be set once on a schema. Previously-set version: #{@state.json_schema_version}"
322
322
  end
323
323
 
324
324
  @state.json_schema_version = version
@@ -285,10 +285,7 @@ module ElasticGraph
285
285
  it usually differs from the true distinct value count by less than 7%.
286
286
  EOS
287
287
 
288
- f.runtime_metadata_graphql_field = f.runtime_metadata_graphql_field.with_computation_detail(
289
- empty_bucket_value: 0,
290
- function: :cardinality
291
- )
288
+ f.runtime_metadata_computation_detail empty_bucket_value: 0, function: :cardinality
292
289
  end
293
290
 
294
291
  yield type
@@ -173,7 +173,7 @@ module ElasticGraph
173
173
  # end
174
174
  def immutable_value(field_name, from:, nullable: true, can_change_from_null: false)
175
175
  if !nullable && can_change_from_null
176
- raise SchemaError, "`can_change_from_null: true` is not allowed with `nullable: false` (as there would be no `null` values to change from)."
176
+ raise Errors::SchemaError, "`can_change_from_null: true` is not allowed with `nullable: false` (as there would be no `null` values to change from)."
177
177
  end
178
178
 
179
179
  fields << DerivedFields::ImmutableValue.new(
@@ -280,7 +280,7 @@ module ElasticGraph
280
280
 
281
281
  def generate_script
282
282
  if fields.empty?
283
- raise SchemaError, "`derive_indexed_type_fields` definition for #{destination_type_ref} (from #{source_type.name}) " \
283
+ raise Errors::SchemaError, "`derive_indexed_type_fields` definition for #{destination_type_ref} (from #{source_type.name}) " \
284
284
  "has no derived field definitions."
285
285
  end
286
286
 
@@ -6,7 +6,7 @@
6
6
  #
7
7
  # frozen_string_literal: true
8
8
 
9
- require "elastic_graph/error"
9
+ require "elastic_graph/errors"
10
10
  require "elastic_graph/support/hash_util"
11
11
  require "elastic_graph/support/memoizable_data"
12
12
 
@@ -101,7 +101,7 @@ module ElasticGraph
101
101
  return if problem_fields.empty?
102
102
 
103
103
  field_descriptions = problem_fields.map(&:name).sort.map { |f| "`#{f}`" }.join(", ")
104
- raise SchemaError,
104
+ raise Errors::SchemaError,
105
105
  "`#{type_name}` has #{problem_fields.size} field(s) (#{field_descriptions}) that are `sourced_from` " \
106
106
  "another type and also have JSON schema customizations. Instead, put the JSON schema " \
107
107
  "customizations on the source type's field definitions."
@@ -47,7 +47,7 @@ module ElasticGraph
47
47
  # @api private
48
48
  def initialize(name, settings, schema_def_state, indexed_type)
49
49
  if name.include?(ROLLOVER_INDEX_INFIX_MARKER)
50
- raise SchemaError, "`#{name}` is an invalid index definition name since it contains " \
50
+ raise Errors::SchemaError, "`#{name}` is an invalid index definition name since it contains " \
51
51
  "`#{ROLLOVER_INDEX_INFIX_MARKER}` which ElasticGraph treats as special."
52
52
  end
53
53
 
@@ -124,11 +124,11 @@ module ElasticGraph
124
124
 
125
125
  unless date_and_datetime_types.include?(timestamp_field_path.type.fully_unwrapped.name)
126
126
  date_or_datetime_description = date_and_datetime_types.map { |t| "`#{t}`" }.join(" or ")
127
- raise SchemaError, "rollover field `#{timestamp_field_path.full_description}` cannot be used for rollover since it is not a #{date_or_datetime_description} field."
127
+ raise Errors::SchemaError, "rollover field `#{timestamp_field_path.full_description}` cannot be used for rollover since it is not a #{date_or_datetime_description} field."
128
128
  end
129
129
 
130
130
  if timestamp_field_path.type.list?
131
- raise SchemaError, "rollover field `#{timestamp_field_path.full_description}` cannot be used for rollover since it is a list field."
131
+ raise Errors::SchemaError, "rollover field `#{timestamp_field_path.full_description}` cannot be used for rollover since it is a list field."
132
132
  end
133
133
 
134
134
  timestamp_field_path.path_parts.each { |f| f.json_schema nullable: false }
@@ -172,7 +172,7 @@ module ElasticGraph
172
172
  routing_field_path = public_field_path(routing_field_path_name, explanation: "it is referenced as an index `route_with` field")
173
173
 
174
174
  unless routing_field_path.type.leaf?
175
- raise SchemaError, "shard routing field `#{routing_field_path.full_description}` cannot be used for routing since it is not a leaf field."
175
+ raise Errors::SchemaError, "shard routing field `#{routing_field_path.full_description}` cannot be used for routing since it is not a leaf field."
176
176
  end
177
177
 
178
178
  self.routing_field_path = routing_field_path
@@ -304,7 +304,7 @@ module ElasticGraph
304
304
  error_msg += " Note: the `#{indexed_type.name}.#{path_parts.first}` definition must come before the `index` call."
305
305
  end
306
306
 
307
- raise SchemaError, error_msg
307
+ raise Errors::SchemaError, error_msg
308
308
  end
309
309
 
310
310
  def date_and_datetime_types
@@ -6,7 +6,7 @@
6
6
  #
7
7
  # frozen_string_literal: true
8
8
 
9
- require "elastic_graph/error"
9
+ require "elastic_graph/errors"
10
10
  require "elastic_graph/schema_definition/indexing/field_type/union"
11
11
  require "elastic_graph/schema_definition/schema_elements/list_counts_state"
12
12
 
@@ -79,7 +79,7 @@ module ElasticGraph
79
79
  defs << "on #{st.name}:\n#{field.to_sdl.strip} mapping: #{field.resolve_mapping.inspect}" if st.graphql_fields_by_name.key?(field_name)
80
80
  end
81
81
 
82
- raise SchemaError,
82
+ raise Errors::SchemaError,
83
83
  "Conflicting definitions for field `#{field_name}` on the subtypes of `#{name}`. " \
84
84
  "Their definitions must agree. Defs:\n\n#{def_strings.join("\n\n")}"
85
85
  end
@@ -102,7 +102,7 @@ module ElasticGraph
102
102
  "#{name}: indexed? = #{value}"
103
103
  end
104
104
 
105
- raise SchemaError,
105
+ raise Errors::SchemaError,
106
106
  "The #{self.class.name} #{name} has some indexed subtypes, and some non-indexed subtypes. " \
107
107
  "All subtypes must be indexed or all must NOT be indexed. Subtypes:\n" \
108
108
  "#{descriptions.join("\n")}"
@@ -103,7 +103,7 @@ module ElasticGraph
103
103
  param_diff = (options.keys.to_set - CUSTOMIZABLE_DATASTORE_PARAMS).to_a
104
104
 
105
105
  unless param_diff.empty?
106
- raise SchemaError, "Some configured mapping overrides are unsupported: #{param_diff.inspect}"
106
+ raise Errors::SchemaError, "Some configured mapping overrides are unsupported: #{param_diff.inspect}"
107
107
  end
108
108
 
109
109
  mapping_options.update(options)
@@ -170,7 +170,7 @@ module ElasticGraph
170
170
  validatable_json_schema = Support::HashUtil.stringify_keys(options)
171
171
 
172
172
  if (error_msg = JSONSchema.strict_meta_schema_validator.validate_with_error_message(validatable_json_schema))
173
- raise SchemaError, "Invalid JSON schema options set on #{self}:\n\n#{error_msg}"
173
+ raise Errors::SchemaError, "Invalid JSON schema options set on #{self}:\n\n#{error_msg}"
174
174
  end
175
175
 
176
176
  json_schema_options.update(options)
@@ -6,7 +6,7 @@
6
6
  #
7
7
  # frozen_string_literal: true
8
8
 
9
- require "elastic_graph/error"
9
+ require "elastic_graph/errors"
10
10
 
11
11
  module ElasticGraph
12
12
  module SchemaDefinition
@@ -99,7 +99,7 @@ module ElasticGraph
99
99
  end
100
100
 
101
101
  unless schema_error_messages.empty?
102
- raise SchemaError, schema_error_messages.join("\n\n")
102
+ raise Errors::SchemaError, schema_error_messages.join("\n\n")
103
103
  end
104
104
  end
105
105
 
@@ -27,10 +27,10 @@ module ElasticGraph
27
27
  #
28
28
  # @param name [String] name of GraphQL schema element
29
29
  # @return [void]
30
- # @raise [InvalidGraphQLNameError] if the name is invalid
30
+ # @raise [Errors::InvalidGraphQLNameError] if the name is invalid
31
31
  def self.verify_name!(name)
32
32
  return if GRAPHQL_NAME_PATTERN.match?(name)
33
- raise InvalidGraphQLNameError, "Not a valid GraphQL name: `#{name}`. #{GRAPHQL_NAME_VALIDITY_DESCRIPTION}"
33
+ raise Errors::InvalidGraphQLNameError, "Not a valid GraphQL name: `#{name}`. #{GRAPHQL_NAME_VALIDITY_DESCRIPTION}"
34
34
  end
35
35
  end
36
36
  end
@@ -7,7 +7,7 @@
7
7
  # frozen_string_literal: true
8
8
 
9
9
  require "elastic_graph/constants"
10
- require "elastic_graph/error"
10
+ require "elastic_graph/errors"
11
11
  require "elastic_graph/schema_artifacts/runtime_metadata/schema"
12
12
  require "elastic_graph/schema_artifacts/artifacts_helper_methods"
13
13
  require "elastic_graph/schema_definition/indexing/event_envelope"
@@ -47,10 +47,10 @@ module ElasticGraph
47
47
 
48
48
  # @param version [Integer] desired JSON schema version
49
49
  # @return [Hash<String, Object>] the JSON schema for the requested version, if available
50
- # @raise [NotFoundError] if the requested JSON schema version is not available
50
+ # @raise [Errors::NotFoundError] if the requested JSON schema version is not available
51
51
  def json_schemas_for(version)
52
52
  unless available_json_schema_versions.include?(version)
53
- raise NotFoundError, "The requested json schema version (#{version}) is not available. Available versions: #{available_json_schema_versions.to_a.join(", ")}."
53
+ raise Errors::NotFoundError, "The requested json schema version (#{version}) is not available. Available versions: #{available_json_schema_versions.to_a.join(", ")}."
54
54
  end
55
55
 
56
56
  @latest_versioned_json_schema ||= merge_field_metadata_into_json_schema(current_public_json_schema).json_schema
@@ -241,7 +241,7 @@ module ElasticGraph
241
241
  end
242
242
 
243
243
  unless full_errors.empty?
244
- raise SchemaError, full_errors.join("\n\n")
244
+ raise Errors::SchemaError, full_errors.join("\n\n")
245
245
  end
246
246
  end
247
247
  end
@@ -263,7 +263,7 @@ module ElasticGraph
263
263
  def build_public_json_schema
264
264
  json_schema_version = state.json_schema_version
265
265
  if json_schema_version.nil?
266
- raise SchemaError, "`json_schema_version` must be specified in the schema. To resolve, add `schema.json_schema_version 1` in a schema definition block."
266
+ raise Errors::SchemaError, "`json_schema_version` must be specified in the schema. To resolve, add `schema.json_schema_version 1` in a schema definition block."
267
267
  end
268
268
 
269
269
  indexed_type_names = state.object_types_by_name.values
@@ -319,7 +319,7 @@ module ElasticGraph
319
319
  "- The set of #{set.to_a} forms a circular reference chain."
320
320
  end
321
321
 
322
- raise SchemaError, "Your schema has self-referential types, which are not allowed, since " \
322
+ raise Errors::SchemaError, "Your schema has self-referential types, which are not allowed, since " \
323
323
  "it prevents the datastore mapping and GraphQL schema generation from terminating:\n" \
324
324
  "#{descriptions.join("\n")}"
325
325
  end
@@ -362,13 +362,13 @@ module ElasticGraph
362
362
  end
363
363
 
364
364
  unless (unknown_type_names = registered_type.derived_type_customizations_by_name.keys - types.map(&:name)).empty?
365
- raise SchemaError,
365
+ raise Errors::SchemaError,
366
366
  "`customize_derived_types` was called on `#{registered_type.name}` with some unrecognized type names " \
367
367
  "(#{unknown_type_names.join(", ")}). Maybe some of the derived GraphQL types are misspelled?"
368
368
  end
369
369
 
370
370
  unless (unknown_type_names = registered_type.derived_field_customizations_by_type_and_field_name.keys - types.map(&:name)).empty?
371
- raise SchemaError,
371
+ raise Errors::SchemaError,
372
372
  "`customize_derived_type_fields` was called on `#{registered_type.name}` with some unrecognized type names " \
373
373
  "(#{unknown_type_names.join(", ")}). Maybe some of the derived GraphQL types are misspelled?"
374
374
  end
@@ -378,7 +378,7 @@ module ElasticGraph
378
378
  field_customizations_by_name = registered_type.derived_field_customizations_by_name_for_type(type)
379
379
 
380
380
  if field_customizations_by_name.any? && !type.respond_to?(:graphql_fields_by_name)
381
- raise SchemaError,
381
+ raise Errors::SchemaError,
382
382
  "`customize_derived_type_fields` was called on `#{registered_type.name}` with a type that can " \
383
383
  "never have fields: `#{type.name}`."
384
384
  end
@@ -394,7 +394,7 @@ module ElasticGraph
394
394
  end
395
395
 
396
396
  unless unknown_field_names.empty?
397
- raise SchemaError,
397
+ raise Errors::SchemaError,
398
398
  "`customize_derived_type_fields` was called on `#{registered_type.name}` with some unrecognized field names " \
399
399
  "(#{unknown_field_names.join(", ")}). Maybe one of the field names was misspelled?"
400
400
  end
@@ -551,10 +551,7 @@ module ElasticGraph
551
551
  t.customize_aggregated_values_type do |avt|
552
552
  # not nullable, since sum(empty_set) == 0
553
553
  avt.field names.approximate_sum, "Float!", graphql_only: true do |f|
554
- f.runtime_metadata_graphql_field = f.runtime_metadata_graphql_field.with_computation_detail(
555
- empty_bucket_value: 0,
556
- function: :sum
557
- )
554
+ f.runtime_metadata_computation_detail empty_bucket_value: 0, function: :sum
558
555
 
559
556
  f.documentation <<~EOS
560
557
  The sum of the field values within this grouping.
@@ -574,10 +571,7 @@ module ElasticGraph
574
571
  end
575
572
 
576
573
  avt.field names.approximate_avg, "Float", graphql_only: true do |f|
577
- f.runtime_metadata_graphql_field = f.runtime_metadata_graphql_field.with_computation_detail(
578
- empty_bucket_value: nil,
579
- function: :avg
580
- )
574
+ f.runtime_metadata_computation_detail empty_bucket_value: nil, function: :avg
581
575
 
582
576
  f.documentation <<~EOS
583
577
  The average (mean) of the field values within this grouping.
@@ -855,10 +849,7 @@ module ElasticGraph
855
849
  t.customize_aggregated_values_type do |avt|
856
850
  # not nullable, since sum(empty_set) == 0
857
851
  avt.field names.approximate_sum, "Float!", graphql_only: true do |f|
858
- f.runtime_metadata_graphql_field = f.runtime_metadata_graphql_field.with_computation_detail(
859
- empty_bucket_value: 0,
860
- function: :sum
861
- )
852
+ f.runtime_metadata_computation_detail empty_bucket_value: 0, function: :sum
862
853
 
863
854
  f.documentation <<~EOS
864
855
  The (approximate) sum of the field values within this grouping.
@@ -870,10 +861,7 @@ module ElasticGraph
870
861
  end
871
862
 
872
863
  avt.field names.exact_sum, "JsonSafeLong", graphql_only: true do |f|
873
- f.runtime_metadata_graphql_field = f.runtime_metadata_graphql_field.with_computation_detail(
874
- empty_bucket_value: 0,
875
- function: :sum
876
- )
864
+ f.runtime_metadata_computation_detail empty_bucket_value: 0, function: :sum
877
865
 
878
866
  f.documentation <<~EOS
879
867
  The exact sum of the field values within this grouping, if it fits in a `JsonSafeLong`.
@@ -902,10 +890,7 @@ module ElasticGraph
902
890
  names.exact_max => [:max, "maximum", names.approximate_max, "largest"]
903
891
  }.each do |exact_name, (func, full_name, approx_name, adjective)|
904
892
  avt.field approx_name, "LongString", graphql_only: true do |f|
905
- f.runtime_metadata_graphql_field = f.runtime_metadata_graphql_field.with_computation_detail(
906
- empty_bucket_value: nil,
907
- function: func
908
- )
893
+ f.runtime_metadata_computation_detail empty_bucket_value: nil, function: func
909
894
 
910
895
  f.documentation <<~EOS
911
896
  The #{full_name} of the field values within this grouping.
@@ -920,10 +905,7 @@ module ElasticGraph
920
905
  end
921
906
 
922
907
  avt.field names.approximate_avg, "Float", graphql_only: true do |f|
923
- f.runtime_metadata_graphql_field = f.runtime_metadata_graphql_field.with_computation_detail(
924
- empty_bucket_value: nil,
925
- function: :avg
926
- )
908
+ f.runtime_metadata_computation_detail empty_bucket_value: nil, function: :avg
927
909
 
928
910
  f.documentation <<~EOS
929
911
  The average (mean) of the field values within this grouping.
@@ -1424,10 +1406,7 @@ module ElasticGraph
1424
1406
  scalar_type.customize_aggregated_values_type do |t|
1425
1407
  # not nullable, since sum(empty_set) == 0
1426
1408
  t.field names.approximate_sum, "Float!", graphql_only: true do |f|
1427
- f.runtime_metadata_graphql_field = f.runtime_metadata_graphql_field.with_computation_detail(
1428
- empty_bucket_value: 0,
1429
- function: :sum
1430
- )
1409
+ f.runtime_metadata_computation_detail empty_bucket_value: 0, function: :sum
1431
1410
 
1432
1411
  f.documentation <<~EOS
1433
1412
  The (approximate) sum of the field values within this grouping.
@@ -1439,10 +1418,7 @@ module ElasticGraph
1439
1418
  end
1440
1419
 
1441
1420
  t.field names.exact_sum, long_type, graphql_only: true do |f|
1442
- f.runtime_metadata_graphql_field = f.runtime_metadata_graphql_field.with_computation_detail(
1443
- empty_bucket_value: 0,
1444
- function: :sum
1445
- )
1421
+ f.runtime_metadata_computation_detail empty_bucket_value: 0, function: :sum
1446
1422
 
1447
1423
  f.documentation <<~EOS
1448
1424
  The exact sum of the field values within this grouping, if it fits in a `#{long_type}`.
@@ -1461,10 +1437,7 @@ module ElasticGraph
1461
1437
  end
1462
1438
 
1463
1439
  t.field names.approximate_avg, "Float", graphql_only: true do |f|
1464
- f.runtime_metadata_graphql_field = f.runtime_metadata_graphql_field.with_computation_detail(
1465
- empty_bucket_value: nil,
1466
- function: :avg
1467
- )
1440
+ f.runtime_metadata_computation_detail empty_bucket_value: nil, function: :avg
1468
1441
 
1469
1442
  f.documentation <<~EOS
1470
1443
  The average (mean) of the field values within this grouping.
@@ -1481,10 +1454,7 @@ module ElasticGraph
1481
1454
  define_exact_min_and_max_on_aggregated_values(aggregated_values_type, scalar_type, &block)
1482
1455
 
1483
1456
  aggregated_values_type.field names.approximate_avg, scalar_type, graphql_only: true do |f|
1484
- f.runtime_metadata_graphql_field = f.runtime_metadata_graphql_field.with_computation_detail(
1485
- empty_bucket_value: nil,
1486
- function: :avg
1487
- )
1457
+ f.runtime_metadata_computation_detail empty_bucket_value: nil, function: :avg
1488
1458
 
1489
1459
  f.documentation <<~EOS
1490
1460
  The average (mean) of the field values within this grouping.
@@ -1501,10 +1471,7 @@ module ElasticGraph
1501
1471
  discussion = yield(adjective: adjective, full_name: full_name)
1502
1472
 
1503
1473
  aggregated_values_type.field name, scalar_type, graphql_only: true do |f|
1504
- f.runtime_metadata_graphql_field = f.runtime_metadata_graphql_field.with_computation_detail(
1505
- empty_bucket_value: nil,
1506
- function: func
1507
- )
1474
+ f.runtime_metadata_computation_detail empty_bucket_value: nil, function: func
1508
1475
 
1509
1476
  f.documentation ["The #{full_name} of the field values within this grouping.", discussion].compact.join("\n\n")
1510
1477
  end
@@ -89,11 +89,11 @@ module ElasticGraph
89
89
  value_name = schema_def_state.enum_value_namer.name_for(name, value_name.to_s)
90
90
 
91
91
  if values_by_name.key?(value_name)
92
- raise SchemaError, "Duplicate value on Enum::Type #{name}: #{value_name}"
92
+ raise Errors::SchemaError, "Duplicate value on Enum::Type #{name}: #{value_name}"
93
93
  end
94
94
 
95
95
  if value_name.length > DEFAULT_MAX_KEYWORD_LENGTH
96
- raise SchemaError, "Enum value `#{name}.#{value_name}` is too long: it is #{value_name.length} characters but cannot exceed #{DEFAULT_MAX_KEYWORD_LENGTH} characters."
96
+ raise Errors::SchemaError, "Enum value `#{name}.#{value_name}` is too long: it is #{value_name.length} characters but cannot exceed #{DEFAULT_MAX_KEYWORD_LENGTH} characters."
97
97
  end
98
98
 
99
99
  values_by_name[value_name] = schema_def_state.factory.new_enum_value(value_name, alternate_original_name, &block)
@@ -127,7 +127,7 @@ module ElasticGraph
127
127
  # @return [String] GraphQL SDL form of the enum type
128
128
  def to_sdl
129
129
  if values_by_name.empty?
130
- raise SchemaError, "Enum type #{name} has no values, but enums must have at least one value."
130
+ raise Errors::SchemaError, "Enum type #{name} has no values, but enums must have at least one value."
131
131
  end
132
132
 
133
133
  <<~EOS
@@ -7,7 +7,7 @@
7
7
  # frozen_string_literal: true
8
8
 
9
9
  require "elastic_graph/constants"
10
- require "elastic_graph/error"
10
+ require "elastic_graph/errors"
11
11
  require "elastic_graph/support/hash_util"
12
12
 
13
13
  module ElasticGraph
@@ -80,7 +80,7 @@ module ElasticGraph
80
80
  def notify_problems(problems)
81
81
  return if problems.empty?
82
82
 
83
- raise ConfigError, "Provided `enum_value_overrides_by_type_name` have #{problems.size} problem(s):\n\n" \
83
+ raise Errors::ConfigError, "Provided `enum_value_overrides_by_type_name` have #{problems.size} problem(s):\n\n" \
84
84
  "#{problems.map.with_index(1) { |problem, i| "#{i}. #{problem}" }.join("\n\n")}"
85
85
  end
86
86
  end
@@ -37,6 +37,8 @@ module ElasticGraph
37
37
  # @return [State] schema definition state
38
38
  # @!attribute [r] graphql_only
39
39
  # @return [Boolean] true if this field exists only in the GraphQL schema and is not indexed
40
+ # @!attribute [r] name_in_index
41
+ # @return [String] the name of this field in the datastore index
40
42
  #
41
43
  # @!attribute [rw] original_type
42
44
  # @private
@@ -74,7 +76,7 @@ module ElasticGraph
74
76
  # @private
75
77
  # @!attribute [rw] singular_name
76
78
  # @private
77
- # @!attribute [rw] runtime_metadata_graphql_field
79
+ # @!attribute [rw] computation_detail
78
80
  # @private
79
81
  # @!attribute [rw] non_nullable_in_json_schema
80
82
  # @private
@@ -89,8 +91,8 @@ module ElasticGraph
89
91
  :filter_customizations, :grouped_by_customizations, :sub_aggregations_customizations,
90
92
  :aggregated_values_customizations, :sort_order_enum_value_customizations,
91
93
  :args, :sortable, :filterable, :aggregatable, :groupable, :graphql_only, :source, :runtime_field_script, :relationship, :singular_name,
92
- :runtime_metadata_graphql_field, :non_nullable_in_json_schema, :backing_indexing_field, :as_input,
93
- :legacy_grouping_schema
94
+ :computation_detail, :non_nullable_in_json_schema, :backing_indexing_field, :as_input,
95
+ :legacy_grouping_schema, :name_in_index
94
96
  )
95
97
  include Mixins::HasDocumentation
96
98
  include Mixins::HasDirectives
@@ -131,7 +133,7 @@ module ElasticGraph
131
133
  # other schema definition APIs, which also use `singular:` instead of `singular_name:`. We include
132
134
  # the `_name` suffix on the attribute for clarity.
133
135
  singular_name: singular,
134
- runtime_metadata_graphql_field: runtime_metadata_graphql_field.with(name_in_index: name_in_index),
136
+ name_in_index: name_in_index,
135
137
  non_nullable_in_json_schema: false,
136
138
  backing_indexing_field: backing_indexing_field,
137
139
  as_input: as_input,
@@ -139,7 +141,7 @@ module ElasticGraph
139
141
  )
140
142
 
141
143
  if name != name_in_index && name_in_index&.include?(".") && !graphql_only
142
- raise SchemaError, "#{self} has an invalid `name_in_index`: #{name_in_index.inspect}. Only `graphql_only: true` fields can have a `name_in_index` that references a child field."
144
+ raise Errors::SchemaError, "#{self} has an invalid `name_in_index`: #{name_in_index.inspect}. Only `graphql_only: true` fields can have a `name_in_index` that references a child field."
143
145
  end
144
146
 
145
147
  schema_def_state.register_user_defined_field(self)
@@ -395,12 +397,12 @@ module ElasticGraph
395
397
  # (see Mixins::HasTypeInfo#json_schema)
396
398
  def json_schema(nullable: nil, **options)
397
399
  if options.key?(:type)
398
- raise SchemaError, "Cannot override JSON schema type of field `#{name}` with `#{options.fetch(:type)}`"
400
+ raise Errors::SchemaError, "Cannot override JSON schema type of field `#{name}` with `#{options.fetch(:type)}`"
399
401
  end
400
402
 
401
403
  case nullable
402
404
  when true
403
- raise SchemaError, "`nullable: true` is not allowed on a field--just declare the GraphQL field as being nullable (no `!` suffix) instead."
405
+ raise Errors::SchemaError, "`nullable: true` is not allowed on a field--just declare the GraphQL field as being nullable (no `!` suffix) instead."
404
406
  when false
405
407
  self.non_nullable_in_json_schema = true
406
408
  end
@@ -478,11 +480,6 @@ module ElasticGraph
478
480
  )
479
481
  end
480
482
 
481
- # @return [String] the name of this field in the datastore index
482
- def name_in_index
483
- runtime_metadata_graphql_field.name_in_index
484
- end
485
-
486
483
  # @private
487
484
  def to_sdl(type_structure_only: false, default_value_sdl: nil, &arg_selector)
488
485
  if type_structure_only
@@ -910,6 +907,28 @@ module ElasticGraph
910
907
  mapping_type == "nested"
911
908
  end
912
909
 
910
+ # Records the `ComputationDetail` that should be on the `runtime_metadata_graphql_field`.
911
+ #
912
+ # @private
913
+ def runtime_metadata_computation_detail(empty_bucket_value:, function:)
914
+ self.computation_detail = SchemaArtifacts::RuntimeMetadata::ComputationDetail.new(
915
+ empty_bucket_value: empty_bucket_value,
916
+ function: function
917
+ )
918
+ end
919
+
920
+ # Lazily creates and returns a GraphQLField using the field's {#name_in_index}, {#computation_detail},
921
+ # and {#relationship}.
922
+ #
923
+ # @private
924
+ def runtime_metadata_graphql_field
925
+ SchemaArtifacts::RuntimeMetadata::GraphQLField.new(
926
+ name_in_index: name_in_index,
927
+ computation_detail: computation_detail,
928
+ relation: relationship&.runtime_metadata
929
+ )
930
+ end
931
+
913
932
  private
914
933
 
915
934
  def args_sdl(joiner:, after_opening_paren: "", &arg_selector)
@@ -988,7 +1007,7 @@ module ElasticGraph
988
1007
  when "nested" then :list_filter_input
989
1008
  when "object" then :fields_list_filter_input
990
1009
  else
991
- raise SchemaError, <<~EOS
1010
+ raise Errors::SchemaError, <<~EOS
992
1011
  `#{parent_type.name}.#{name}` is a list-of-objects field, but the mapping type has not been explicitly specified. Elasticsearch and OpenSearch
993
1012
  offer two ways to index list-of-objects fields. It cannot be changed on an existing field without dropping the index and recreating it (losing
994
1013
  any existing indexed data!), and there are nuanced tradeoffs involved here, so ElasticGraph provides no default mapping in this situation.
@@ -7,7 +7,7 @@
7
7
  # frozen_string_literal: true
8
8
 
9
9
  require "delegate"
10
- require "elastic_graph/error"
10
+ require "elastic_graph/errors"
11
11
  require "elastic_graph/schema_definition/mixins/has_indices"
12
12
  require "elastic_graph/schema_definition/mixins/has_readable_to_s_and_inspect"
13
13
  require "elastic_graph/schema_definition/mixins/implements_interfaces"
@@ -7,7 +7,7 @@
7
7
  # frozen_string_literal: true
8
8
 
9
9
  require "delegate"
10
- require "elastic_graph/error"
10
+ require "elastic_graph/errors"
11
11
  require "elastic_graph/schema_definition/schema_elements/field"
12
12
  require "elastic_graph/support/hash_util"
13
13
 
@@ -124,7 +124,7 @@ module ElasticGraph
124
124
  # end
125
125
  def equivalent_field(path, locally_named: path)
126
126
  if @equivalent_field_paths_by_local_path.key?(locally_named)
127
- raise SchemaError, "`equivalent_field` has been called multiple times on `#{parent_type.name}.#{name}` with the same " \
127
+ raise Errors::SchemaError, "`equivalent_field` has been called multiple times on `#{parent_type.name}.#{name}` with the same " \
128
128
  "`locally_named` value (#{locally_named.inspect}), but each local field can have only one `equivalent_field`."
129
129
  else
130
130
  @equivalent_field_paths_by_local_path[locally_named] = path
@@ -73,7 +73,7 @@ module ElasticGraph
73
73
  ].compact
74
74
 
75
75
  if missing.any?
76
- raise SchemaError, "Scalar types require `mapping` and `json_schema` to be configured, but `#{name}` lacks #{missing.join(" and ")}."
76
+ raise Errors::SchemaError, "Scalar types require `mapping` and `json_schema` to be configured, but `#{name}` lacks #{missing.join(" and ")}."
77
77
  end
78
78
  end
79
79
 
@@ -85,7 +85,7 @@ module ElasticGraph
85
85
  # (see Mixins::HasTypeInfo#mapping)
86
86
  def mapping(**options)
87
87
  self.mapping_type = options.fetch(:type) do
88
- raise SchemaError, "Must specify a mapping `type:` on custom scalars but was missing on the `#{name}` type."
88
+ raise Errors::SchemaError, "Must specify a mapping `type:` on custom scalars but was missing on the `#{name}` type."
89
89
  end
90
90
 
91
91
  super
@@ -8,7 +8,7 @@
8
8
 
9
9
  require "did_you_mean"
10
10
  require "elastic_graph/constants"
11
- require "elastic_graph/error"
11
+ require "elastic_graph/errors"
12
12
 
13
13
  module ElasticGraph
14
14
  module SchemaDefinition
@@ -59,7 +59,7 @@ module ElasticGraph
59
59
  end
60
60
 
61
61
  # Generates a derived type name based on the provided format name and arguments. The given arguments must match
62
- # the placeholders in the format. If the format name is unknown or the arguments are invalid, a `ConfigError` is raised.
62
+ # the placeholders in the format. If the format name is unknown or the arguments are invalid, a `Errors::ConfigError` is raised.
63
63
  #
64
64
  # Note: this does not apply any configured `name_overrides`. It's up to the caller to apply that when desired.
65
65
  #
@@ -67,16 +67,16 @@ module ElasticGraph
67
67
  def generate_name_for(format_name, **args)
68
68
  format = formats.fetch(format_name) do
69
69
  suggestions = FORMAT_SUGGESTER.correct(format_name).map(&:inspect)
70
- raise ConfigError, "Unknown format name: #{format_name.inspect}. Possible alternatives: #{suggestions.join(", ")}."
70
+ raise Errors::ConfigError, "Unknown format name: #{format_name.inspect}. Possible alternatives: #{suggestions.join(", ")}."
71
71
  end
72
72
 
73
73
  expected_placeholders = REQUIRED_PLACEHOLDERS.fetch(format_name)
74
74
  if (missing_placeholders = expected_placeholders - args.keys).any?
75
- raise ConfigError, "The arguments (#{args.inspect}) provided for `#{format_name}` format (#{format.inspect}) omits required key(s): #{missing_placeholders.join(", ")}."
75
+ raise Errors::ConfigError, "The arguments (#{args.inspect}) provided for `#{format_name}` format (#{format.inspect}) omits required key(s): #{missing_placeholders.join(", ")}."
76
76
  end
77
77
 
78
78
  if (extra_placeholders = args.keys - expected_placeholders).any?
79
- raise ConfigError, "The arguments (#{args.inspect}) provided for `#{format_name}` format (#{format.inspect}) contains extra key(s): #{extra_placeholders.join(", ")}."
79
+ raise Errors::ConfigError, "The arguments (#{args.inspect}) provided for `#{format_name}` format (#{format.inspect}) contains extra key(s): #{extra_placeholders.join(", ")}."
80
80
  end
81
81
 
82
82
  format % args
@@ -93,7 +93,7 @@ module ElasticGraph
93
93
  # @private
94
94
  def extract_base_from(name, format:)
95
95
  unless REQUIRED_PLACEHOLDERS.fetch(format) == [:base]
96
- raise InvalidArgumentValueError, "The `#{format}` format does not support base extraction."
96
+ raise Errors::InvalidArgumentValueError, "The `#{format}` format does not support base extraction."
97
97
  end
98
98
 
99
99
  regexes.fetch(format).match(name)&.captures&.first
@@ -228,7 +228,7 @@ module ElasticGraph
228
228
  def notify_problems(problems, source_description)
229
229
  return if problems.empty?
230
230
 
231
- raise ConfigError, "#{source_description} have #{problems.size} problem(s):\n\n" \
231
+ raise Errors::ConfigError, "#{source_description} have #{problems.size} problem(s):\n\n" \
232
232
  "#{problems.map.with_index(1) { |problem, i| "#{i}. #{problem}" }.join("\n\n")}"
233
233
  end
234
234
  end
@@ -6,7 +6,7 @@
6
6
  #
7
7
  # frozen_string_literal: true
8
8
 
9
- require "elastic_graph/error"
9
+ require "elastic_graph/errors"
10
10
  require "elastic_graph/schema_artifacts/runtime_metadata/schema_element_names"
11
11
  require "elastic_graph/schema_definition/mixins/verifies_graphql_name"
12
12
  require "elastic_graph/schema_definition/schema_elements/type_namer"
@@ -88,7 +88,7 @@ module ElasticGraph
88
88
  false
89
89
  else
90
90
  # If we can't determine the type from the name, just raise an error.
91
- raise SchemaError, "Type `#{name}` cannot be resolved. Is it misspelled?"
91
+ raise Errors::SchemaError, "Type `#{name}` cannot be resolved. Is it misspelled?"
92
92
  end
93
93
  end
94
94
 
@@ -109,7 +109,7 @@ module ElasticGraph
109
109
  true
110
110
  else
111
111
  # If we can't determine the type from the name, just raise an error.
112
- raise SchemaError, "Type `#{name}` cannot be resolved. Is it misspelled?"
112
+ raise Errors::SchemaError, "Type `#{name}` cannot be resolved. Is it misspelled?"
113
113
  end
114
114
  end
115
115
 
@@ -320,7 +320,7 @@ module ElasticGraph
320
320
  in [*parent_types, last_parent_type]
321
321
  type_namer.generate_name_for(:SubAggregation, parent_types: parent_types.join, base: last_parent_type)
322
322
  else
323
- raise SchemaError, "Unexpected `parent_doc_types`: #{parent_doc_types.inspect}. `parent_doc_types` must not be empty."
323
+ raise Errors::SchemaError, "Unexpected `parent_doc_types`: #{parent_doc_types.inspect}. `parent_doc_types` must not be empty."
324
324
  end
325
325
  end
326
326
 
@@ -6,7 +6,7 @@
6
6
  #
7
7
  # frozen_string_literal: true
8
8
 
9
- require "elastic_graph/error"
9
+ require "elastic_graph/errors"
10
10
  require "elastic_graph/schema_artifacts/runtime_metadata/relation"
11
11
  require "elastic_graph/schema_definition/indexing/field"
12
12
  require "elastic_graph/schema_definition/indexing/field_type/object"
@@ -191,7 +191,7 @@ module ElasticGraph
191
191
  # end
192
192
  def field(name, type, graphql_only: false, indexing_only: false, **options)
193
193
  if reserved_field_names.include?(name)
194
- raise SchemaError, "Invalid field name: `#{self.name}.#{name}`. `#{name}` is reserved for use by " \
194
+ raise Errors::SchemaError, "Invalid field name: `#{self.name}.#{name}`. `#{name}` is reserved for use by " \
195
195
  "ElasticGraph as a filtering operator. To use it for a field name, add " \
196
196
  "the `schema_element_name_overrides` option (on `ElasticGraph::SchemaDefinition::RakeTasks.new`) to " \
197
197
  "configure an alternate name for the `#{name}` operator."
@@ -519,7 +519,7 @@ module ElasticGraph
519
519
  def register_field(name, field, registry, registry_type, only_option_to_fix, &to_comparable)
520
520
  if (existing_field = registry[name])
521
521
  field = Field.pick_most_accurate_from(field, existing_field, to_comparable: to_comparable || ->(f) { f }) do
522
- raise SchemaError, "Duplicate #{registry_type} field on Type #{self.name}: #{name}. " \
522
+ raise Errors::SchemaError, "Duplicate #{registry_type} field on Type #{self.name}: #{name}. " \
523
523
  "To resolve this, set `#{only_option_to_fix}: true` on one of the fields."
524
524
  end
525
525
  end
@@ -540,7 +540,6 @@ module ElasticGraph
540
540
  yield relationship if block_given?
541
541
 
542
542
  field.relationship = relationship
543
- field.runtime_metadata_graphql_field = field.runtime_metadata_graphql_field.with(relation: relationship.runtime_metadata)
544
543
 
545
544
  if dir == :out
546
545
  register_inferred_foreign_key_fields(from_type: [via, foreign_key_type], to_other: ["id", "ID!"], related_type: relationship.related_type)
@@ -90,7 +90,7 @@ module ElasticGraph
90
90
  type_ref = schema_def_state.type_ref(name.to_s).to_final_form
91
91
 
92
92
  if subtype_refs.include?(type_ref)
93
- raise SchemaError, "Duplicate subtype on UnionType #{self.name}: #{name}"
93
+ raise Errors::SchemaError, "Duplicate subtype on UnionType #{self.name}: #{name}"
94
94
  end
95
95
 
96
96
  subtype_refs << type_ref
@@ -122,7 +122,7 @@ module ElasticGraph
122
122
  # @return [String] the formatted GraphQL SDL of the union type
123
123
  def to_sdl
124
124
  if subtype_refs.empty?
125
- raise SchemaError, "UnionType type #{name} has no subtypes, but must have at least one."
125
+ raise Errors::SchemaError, "UnionType type #{name} has no subtypes, but must have at least one."
126
126
  end
127
127
 
128
128
  "#{formatted_documentation}union #{name} #{directives_sdl(suffix_with: " ")}= #{subtype_refs.map(&:name).to_a.join(" | ")}"
@@ -147,7 +147,7 @@ module ElasticGraph
147
147
  def resolve_subtypes
148
148
  subtype_refs.map do |ref|
149
149
  ref.as_object_type || raise(
150
- SchemaError, "The subtype `#{ref}` of the UnionType `#{name}` is not a defined object type."
150
+ Errors::SchemaError, "The subtype `#{ref}` of the UnionType `#{name}` is not a defined object type."
151
151
  )
152
152
  end
153
153
  end
@@ -6,7 +6,7 @@
6
6
  #
7
7
  # frozen_string_literal: true
8
8
 
9
- require "elastic_graph/error"
9
+ require "elastic_graph/errors"
10
10
  require "elastic_graph/schema_definition/scripting/script"
11
11
  require "elastic_graph/support/memoizable_data"
12
12
  require "pathname"
@@ -33,16 +33,16 @@ module ElasticGraph
33
33
  def scripts
34
34
  @scripts ||= ::Pathname.new(dir).children.sort.flat_map do |context_dir|
35
35
  unless context_dir.directory?
36
- raise InvalidScriptDirectoryError, "`#{dir}` has a file (#{context_dir}) that is not a context directory as expected."
36
+ raise Errors::InvalidScriptDirectoryError, "`#{dir}` has a file (#{context_dir}) that is not a context directory as expected."
37
37
  end
38
38
 
39
39
  context_dir.children.sort.map do |script_file|
40
40
  unless script_file.file?
41
- raise InvalidScriptDirectoryError, "`#{dir}` has extra directory nesting (#{script_file}) that is unexpected."
41
+ raise Errors::InvalidScriptDirectoryError, "`#{dir}` has extra directory nesting (#{script_file}) that is unexpected."
42
42
  end
43
43
 
44
44
  language = SUPPORTED_LANGUAGES_BY_EXTENSION[script_file.extname] || raise(
45
- InvalidScriptDirectoryError, "`#{dir}` has a file (`#{script_file}`) that has an unrecognized file extension: #{script_file.extname}."
45
+ Errors::InvalidScriptDirectoryError, "`#{dir}` has a file (`#{script_file}`) that has an unrecognized file extension: #{script_file.extname}."
46
46
  )
47
47
 
48
48
  Script.new(
@@ -68,7 +68,7 @@ module ElasticGraph
68
68
  end.keys
69
69
 
70
70
  if duplicate_scoped_names.any?
71
- raise InvalidScriptDirectoryError, "`#{dir}` has multiple scripts with the same scoped name, which is not allowed: #{duplicate_scoped_names.join(", ")}."
71
+ raise Errors::InvalidScriptDirectoryError, "`#{dir}` has multiple scripts with the same scoped name, which is not allowed: #{duplicate_scoped_names.join(", ")}."
72
72
  end
73
73
  end
74
74
  end
@@ -7,7 +7,7 @@
7
7
  # frozen_string_literal: true
8
8
 
9
9
  require "elastic_graph/constants"
10
- require "elastic_graph/error"
10
+ require "elastic_graph/errors"
11
11
  require "elastic_graph/schema_definition/factory"
12
12
  require "elastic_graph/schema_definition/mixins/has_readable_to_s_and_inspect"
13
13
  require "elastic_graph/schema_definition/schema_elements/enum_value_namer"
@@ -162,7 +162,7 @@ module ElasticGraph
162
162
  def user_defined_field_references_by_type_name
163
163
  @user_defined_field_references_by_type_name ||= begin
164
164
  unless user_definition_complete
165
- raise SchemaError, "Cannot access `user_defined_field_references_by_type_name` until the schema definition is complete."
165
+ raise Errors::SchemaError, "Cannot access `user_defined_field_references_by_type_name` until the schema definition is complete."
166
166
  end
167
167
 
168
168
  @user_defined_field_references_by_type_name ||= user_defined_fields
@@ -197,11 +197,11 @@ module ElasticGraph
197
197
  name = (_ = type).name
198
198
 
199
199
  if RESERVED_TYPE_NAMES.include?(name)
200
- raise SchemaError, "`#{name}` cannot be used as a schema type because it is a reserved name."
200
+ raise Errors::SchemaError, "`#{name}` cannot be used as a schema type because it is a reserved name."
201
201
  end
202
202
 
203
203
  if types_by_name.key?(name)
204
- raise SchemaError, "Duplicate definition for type #{name} detected. Each type can only be defined once."
204
+ raise Errors::SchemaError, "Duplicate definition for type #{name} detected. Each type can only be defined once."
205
205
  end
206
206
 
207
207
  additional_type_index[name] = type if additional_type_index
@@ -6,7 +6,7 @@
6
6
  #
7
7
  # frozen_string_literal: true
8
8
 
9
- require "elastic_graph/error"
9
+ require "elastic_graph/errors"
10
10
  require "elastic_graph/schema_definition/api"
11
11
  require "elastic_graph/schema_artifacts/runtime_metadata/schema_element_names"
12
12
 
@@ -93,7 +93,7 @@ module ElasticGraph
93
93
 
94
94
  if type_defs.size >= 2
95
95
  # :nocov: -- only executed when a mistake has been made; causes a failing test.
96
- raise SchemaError,
96
+ raise Errors::SchemaError,
97
97
  "Expected to find 0 or 1 type definition for #{type}, but found #{type_defs.size}. Type defs:\n\n#{type_defs.join("\n\n")}"
98
98
  # :nocov:
99
99
  end
metadata CHANGED
@@ -1,14 +1,16 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: elasticgraph-schema_definition
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.18.0.4
4
+ version: 0.18.0.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Myron Marston
8
+ - Ben VandenBos
9
+ - Square Engineering
8
10
  autorequire:
9
11
  bindir: exe
10
12
  cert_chain: []
11
- date: 2024-09-06 00:00:00.000000000 Z
13
+ date: 2024-09-20 00:00:00.000000000 Z
12
14
  dependencies:
13
15
  - !ruby/object:Gem::Dependency
14
16
  name: rubocop-factory_bot
@@ -238,70 +240,70 @@ dependencies:
238
240
  requirements:
239
241
  - - '='
240
242
  - !ruby/object:Gem::Version
241
- version: 0.18.0.4
243
+ version: 0.18.0.5
242
244
  type: :runtime
243
245
  prerelease: false
244
246
  version_requirements: !ruby/object:Gem::Requirement
245
247
  requirements:
246
248
  - - '='
247
249
  - !ruby/object:Gem::Version
248
- version: 0.18.0.4
250
+ version: 0.18.0.5
249
251
  - !ruby/object:Gem::Dependency
250
252
  name: elasticgraph-indexer
251
253
  requirement: !ruby/object:Gem::Requirement
252
254
  requirements:
253
255
  - - '='
254
256
  - !ruby/object:Gem::Version
255
- version: 0.18.0.4
257
+ version: 0.18.0.5
256
258
  type: :runtime
257
259
  prerelease: false
258
260
  version_requirements: !ruby/object:Gem::Requirement
259
261
  requirements:
260
262
  - - '='
261
263
  - !ruby/object:Gem::Version
262
- version: 0.18.0.4
264
+ version: 0.18.0.5
263
265
  - !ruby/object:Gem::Dependency
264
266
  name: elasticgraph-json_schema
265
267
  requirement: !ruby/object:Gem::Requirement
266
268
  requirements:
267
269
  - - '='
268
270
  - !ruby/object:Gem::Version
269
- version: 0.18.0.4
271
+ version: 0.18.0.5
270
272
  type: :runtime
271
273
  prerelease: false
272
274
  version_requirements: !ruby/object:Gem::Requirement
273
275
  requirements:
274
276
  - - '='
275
277
  - !ruby/object:Gem::Version
276
- version: 0.18.0.4
278
+ version: 0.18.0.5
277
279
  - !ruby/object:Gem::Dependency
278
280
  name: elasticgraph-schema_artifacts
279
281
  requirement: !ruby/object:Gem::Requirement
280
282
  requirements:
281
283
  - - '='
282
284
  - !ruby/object:Gem::Version
283
- version: 0.18.0.4
285
+ version: 0.18.0.5
284
286
  type: :runtime
285
287
  prerelease: false
286
288
  version_requirements: !ruby/object:Gem::Requirement
287
289
  requirements:
288
290
  - - '='
289
291
  - !ruby/object:Gem::Version
290
- version: 0.18.0.4
292
+ version: 0.18.0.5
291
293
  - !ruby/object:Gem::Dependency
292
294
  name: elasticgraph-support
293
295
  requirement: !ruby/object:Gem::Requirement
294
296
  requirements:
295
297
  - - '='
296
298
  - !ruby/object:Gem::Version
297
- version: 0.18.0.4
299
+ version: 0.18.0.5
298
300
  type: :runtime
299
301
  prerelease: false
300
302
  version_requirements: !ruby/object:Gem::Requirement
301
303
  requirements:
302
304
  - - '='
303
305
  - !ruby/object:Gem::Version
304
- version: 0.18.0.4
306
+ version: 0.18.0.5
305
307
  - !ruby/object:Gem::Dependency
306
308
  name: graphql
307
309
  requirement: !ruby/object:Gem::Requirement
@@ -336,56 +338,56 @@ dependencies:
336
338
  requirements:
337
339
  - - '='
338
340
  - !ruby/object:Gem::Version
339
- version: 0.18.0.4
341
+ version: 0.18.0.5
340
342
  type: :development
341
343
  prerelease: false
342
344
  version_requirements: !ruby/object:Gem::Requirement
343
345
  requirements:
344
346
  - - '='
345
347
  - !ruby/object:Gem::Version
346
- version: 0.18.0.4
348
+ version: 0.18.0.5
347
349
  - !ruby/object:Gem::Dependency
348
350
  name: elasticgraph-datastore_core
349
351
  requirement: !ruby/object:Gem::Requirement
350
352
  requirements:
351
353
  - - '='
352
354
  - !ruby/object:Gem::Version
353
- version: 0.18.0.4
355
+ version: 0.18.0.5
354
356
  type: :development
355
357
  prerelease: false
356
358
  version_requirements: !ruby/object:Gem::Requirement
357
359
  requirements:
358
360
  - - '='
359
361
  - !ruby/object:Gem::Version
360
- version: 0.18.0.4
362
+ version: 0.18.0.5
361
363
  - !ruby/object:Gem::Dependency
362
364
  name: elasticgraph-elasticsearch
363
365
  requirement: !ruby/object:Gem::Requirement
364
366
  requirements:
365
367
  - - '='
366
368
  - !ruby/object:Gem::Version
367
- version: 0.18.0.4
369
+ version: 0.18.0.5
368
370
  type: :development
369
371
  prerelease: false
370
372
  version_requirements: !ruby/object:Gem::Requirement
371
373
  requirements:
372
374
  - - '='
373
375
  - !ruby/object:Gem::Version
374
- version: 0.18.0.4
376
+ version: 0.18.0.5
375
377
  - !ruby/object:Gem::Dependency
376
378
  name: elasticgraph-opensearch
377
379
  requirement: !ruby/object:Gem::Requirement
378
380
  requirements:
379
381
  - - '='
380
382
  - !ruby/object:Gem::Version
381
- version: 0.18.0.4
383
+ version: 0.18.0.5
382
384
  type: :development
383
385
  prerelease: false
384
386
  version_requirements: !ruby/object:Gem::Requirement
385
387
  requirements:
386
388
  - - '='
387
389
  - !ruby/object:Gem::Version
388
- version: 0.18.0.4
390
+ version: 0.18.0.5
389
391
  description:
390
392
  email:
391
393
  - myron@squareup.com