elasticgraph-schema_definition 1.0.0.rc2 → 1.0.0.rc4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 2df8cb5a519f1210397de38c6400bb7bbe8ee9f9cdec00c7bc3cb42a774b0b12
4
- data.tar.gz: 8217dffbed272a98a731ecac27306b3618aedcbfd0a644ff2baaafcc54b1ca2a
3
+ metadata.gz: 3544f8478716a2ee30ea3d267460f02878cf374c78f5448b136b6217b76bfdbf
4
+ data.tar.gz: 724259a4adbb18b3f3c993729ab8ea19c14c78242d06669556dd34cca112d88c
5
5
  SHA512:
6
- metadata.gz: '0924aaa26ccb012d51b22208e7c5184b2d9f7c5003c7d405aa2afa189e316a2c11c1075e096ebbad24c951ef611546c8ec8ec358a54fd47c69bfd3747abede1f'
7
- data.tar.gz: '091641a18d8483b84c2fb095f1152a310015559fa1a1ae4ae5fcba14bd34db9e7faf86c21a7c15c1f6d6197dd091a7f0408a4ee141a3dc53b2a3e8cf89bd80e1'
6
+ metadata.gz: 59bc07ded4e0803d7b56ad383ebce0eaec5bbb043c75a4329d75df7663332df1bf2cc49201592b1b9e12fff125ebf90f3531df54b48b289a8fa877db4923aa85
7
+ data.tar.gz: 7c8680c5685824c49fddffbeb2776613f9037d58f0cc471cf38b695a8309c05d538228d293570ab89e2d67b07fb3599ee66bc167a641e94070de4d1067292ac5
data/README.md CHANGED
@@ -46,3 +46,44 @@ graph LR;
46
46
  click graphql-c_parser href "https://rubygems.org/gems/graphql-c_parser" "Open on RubyGems.org" _blank;
47
47
  click rake href "https://rubygems.org/gems/rake" "Open on RubyGems.org" _blank;
48
48
  ```
49
+
50
+ ## Usage
51
+
52
+ Define the shape of your data using the schema definition API:
53
+
54
+ ```ruby
55
+ # in config/schema/team.rb
56
+
57
+ ElasticGraph.define_schema do |schema|
58
+ schema.enum_type "SportsLeague" do |t|
59
+ t.value "MLB"
60
+ t.value "NBA"
61
+ t.value "NFL"
62
+ t.value "NHL"
63
+ end
64
+
65
+ schema.object_type "Team" do |t|
66
+ t.field "id", "ID!"
67
+ t.field "league", "SportsLeague"
68
+ t.field "formedOn", "Date"
69
+ t.field "currentName", "String"
70
+ t.field "pastNames", "[String!]!"
71
+ t.field "stadiumLocation", "GeoLocation"
72
+
73
+ t.index "teams"
74
+ end
75
+ end
76
+ ```
77
+
78
+ The default rake task (`bundle exec rake`) performs a full build, including generating schema artifacts.
79
+ You can directly generate schema artifacts with:
80
+
81
+ ```bash
82
+ bundle exec rake schema_artifacts:dump
83
+ ```
84
+
85
+ To see if the artifacts are up-to-date, run:
86
+
87
+ ```bash
88
+ bundle exec rake schema_artifacts:check
89
+ ```
@@ -99,7 +99,7 @@ module ElasticGraph
99
99
  include Mixins::HasDocumentation
100
100
  include Mixins::HasDirectives
101
101
  include Mixins::HasTypeInfo
102
- include Mixins::HasReadableToSAndInspect.new { |f| "#{f.parent_type.name}.#{f.name}: #{f.type}" }
102
+ include Mixins::HasReadableToSAndInspect.new(&:to_qualified_sdl)
103
103
 
104
104
  # @private
105
105
  def initialize(
@@ -469,6 +469,24 @@ module ElasticGraph
469
469
  super(**options)
470
470
  end
471
471
 
472
+ # (see Mixins::HasTypeInfo#mapping)
473
+ def mapping(**options)
474
+ # ElasticGraph has special handling for the nested type (e.g. we generate sub-aggregation types in the GraphQL schema for
475
+ # nested fields), and that special handling requires that `nested` only be used on list-of-objects fields; otherwise
476
+ # confusing errors can result when dumping schema artifacts. It only makes sense to use `nested` on a list-of-objects
477
+ # field, anyway.
478
+ if options[:type] == "nested"
479
+ schema_def_state.after_user_definition_complete do
480
+ unless type_for_derived_types.list? && type.fully_unwrapped.object?
481
+ raise Errors::SchemaError, "The `nested` mapping type has been used on field `#{to_qualified_sdl}`, " \
482
+ 'but `nested` is only valid on a list-of-objects field. Remove `field.mapping type: "nested"` to continue.'
483
+ end
484
+ end
485
+ end
486
+
487
+ super
488
+ end
489
+
472
490
  # Configures ElasticGraph to source a field’s value from a related object. This can be used to denormalize data at ingestion time to
473
491
  # support filtering, grouping, sorting, or aggregating data on a field from a related object.
474
492
  #
@@ -589,6 +607,12 @@ module ElasticGraph
589
607
  end
590
608
  end
591
609
 
610
+ # Returns the definition of this field in SDL form, qualified by the parent type.
611
+ # @private
612
+ def to_qualified_sdl
613
+ "#{parent_type.name}.#{name}: #{type}"
614
+ end
615
+
592
616
  # Indicates if this field is sortable. Sortable fields will have corresponding `_ASC` and `_DESC` values generated in the
593
617
  # sort order {EnumType} of the parent indexed type.
594
618
  #
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: elasticgraph-schema_definition
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0.rc2
4
+ version: 1.0.0.rc4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Myron Marston
@@ -17,84 +17,84 @@ dependencies:
17
17
  requirements:
18
18
  - - '='
19
19
  - !ruby/object:Gem::Version
20
- version: 1.0.0.rc2
20
+ version: 1.0.0.rc4
21
21
  type: :runtime
22
22
  prerelease: false
23
23
  version_requirements: !ruby/object:Gem::Requirement
24
24
  requirements:
25
25
  - - '='
26
26
  - !ruby/object:Gem::Version
27
- version: 1.0.0.rc2
27
+ version: 1.0.0.rc4
28
28
  - !ruby/object:Gem::Dependency
29
29
  name: elasticgraph-indexer
30
30
  requirement: !ruby/object:Gem::Requirement
31
31
  requirements:
32
32
  - - '='
33
33
  - !ruby/object:Gem::Version
34
- version: 1.0.0.rc2
34
+ version: 1.0.0.rc4
35
35
  type: :runtime
36
36
  prerelease: false
37
37
  version_requirements: !ruby/object:Gem::Requirement
38
38
  requirements:
39
39
  - - '='
40
40
  - !ruby/object:Gem::Version
41
- version: 1.0.0.rc2
41
+ version: 1.0.0.rc4
42
42
  - !ruby/object:Gem::Dependency
43
43
  name: elasticgraph-json_schema
44
44
  requirement: !ruby/object:Gem::Requirement
45
45
  requirements:
46
46
  - - '='
47
47
  - !ruby/object:Gem::Version
48
- version: 1.0.0.rc2
48
+ version: 1.0.0.rc4
49
49
  type: :runtime
50
50
  prerelease: false
51
51
  version_requirements: !ruby/object:Gem::Requirement
52
52
  requirements:
53
53
  - - '='
54
54
  - !ruby/object:Gem::Version
55
- version: 1.0.0.rc2
55
+ version: 1.0.0.rc4
56
56
  - !ruby/object:Gem::Dependency
57
57
  name: elasticgraph-schema_artifacts
58
58
  requirement: !ruby/object:Gem::Requirement
59
59
  requirements:
60
60
  - - '='
61
61
  - !ruby/object:Gem::Version
62
- version: 1.0.0.rc2
62
+ version: 1.0.0.rc4
63
63
  type: :runtime
64
64
  prerelease: false
65
65
  version_requirements: !ruby/object:Gem::Requirement
66
66
  requirements:
67
67
  - - '='
68
68
  - !ruby/object:Gem::Version
69
- version: 1.0.0.rc2
69
+ version: 1.0.0.rc4
70
70
  - !ruby/object:Gem::Dependency
71
71
  name: elasticgraph-support
72
72
  requirement: !ruby/object:Gem::Requirement
73
73
  requirements:
74
74
  - - '='
75
75
  - !ruby/object:Gem::Version
76
- version: 1.0.0.rc2
76
+ version: 1.0.0.rc4
77
77
  type: :runtime
78
78
  prerelease: false
79
79
  version_requirements: !ruby/object:Gem::Requirement
80
80
  requirements:
81
81
  - - '='
82
82
  - !ruby/object:Gem::Version
83
- version: 1.0.0.rc2
83
+ version: 1.0.0.rc4
84
84
  - !ruby/object:Gem::Dependency
85
85
  name: graphql
86
86
  requirement: !ruby/object:Gem::Requirement
87
87
  requirements:
88
88
  - - "~>"
89
89
  - !ruby/object:Gem::Version
90
- version: 2.5.10
90
+ version: 2.5.11
91
91
  type: :runtime
92
92
  prerelease: false
93
93
  version_requirements: !ruby/object:Gem::Requirement
94
94
  requirements:
95
95
  - - "~>"
96
96
  - !ruby/object:Gem::Version
97
- version: 2.5.10
97
+ version: 2.5.11
98
98
  - !ruby/object:Gem::Dependency
99
99
  name: graphql-c_parser
100
100
  requirement: !ruby/object:Gem::Requirement
@@ -135,56 +135,56 @@ dependencies:
135
135
  requirements:
136
136
  - - '='
137
137
  - !ruby/object:Gem::Version
138
- version: 1.0.0.rc2
138
+ version: 1.0.0.rc4
139
139
  type: :development
140
140
  prerelease: false
141
141
  version_requirements: !ruby/object:Gem::Requirement
142
142
  requirements:
143
143
  - - '='
144
144
  - !ruby/object:Gem::Version
145
- version: 1.0.0.rc2
145
+ version: 1.0.0.rc4
146
146
  - !ruby/object:Gem::Dependency
147
147
  name: elasticgraph-datastore_core
148
148
  requirement: !ruby/object:Gem::Requirement
149
149
  requirements:
150
150
  - - '='
151
151
  - !ruby/object:Gem::Version
152
- version: 1.0.0.rc2
152
+ version: 1.0.0.rc4
153
153
  type: :development
154
154
  prerelease: false
155
155
  version_requirements: !ruby/object:Gem::Requirement
156
156
  requirements:
157
157
  - - '='
158
158
  - !ruby/object:Gem::Version
159
- version: 1.0.0.rc2
159
+ version: 1.0.0.rc4
160
160
  - !ruby/object:Gem::Dependency
161
161
  name: elasticgraph-elasticsearch
162
162
  requirement: !ruby/object:Gem::Requirement
163
163
  requirements:
164
164
  - - '='
165
165
  - !ruby/object:Gem::Version
166
- version: 1.0.0.rc2
166
+ version: 1.0.0.rc4
167
167
  type: :development
168
168
  prerelease: false
169
169
  version_requirements: !ruby/object:Gem::Requirement
170
170
  requirements:
171
171
  - - '='
172
172
  - !ruby/object:Gem::Version
173
- version: 1.0.0.rc2
173
+ version: 1.0.0.rc4
174
174
  - !ruby/object:Gem::Dependency
175
175
  name: elasticgraph-opensearch
176
176
  requirement: !ruby/object:Gem::Requirement
177
177
  requirements:
178
178
  - - '='
179
179
  - !ruby/object:Gem::Version
180
- version: 1.0.0.rc2
180
+ version: 1.0.0.rc4
181
181
  type: :development
182
182
  prerelease: false
183
183
  version_requirements: !ruby/object:Gem::Requirement
184
184
  requirements:
185
185
  - - '='
186
186
  - !ruby/object:Gem::Version
187
- version: 1.0.0.rc2
187
+ version: 1.0.0.rc4
188
188
  email:
189
189
  - myron@squareup.com
190
190
  executables: []
@@ -269,10 +269,10 @@ licenses:
269
269
  - MIT
270
270
  metadata:
271
271
  bug_tracker_uri: https://github.com/block/elasticgraph/issues
272
- changelog_uri: https://github.com/block/elasticgraph/releases/tag/v1.0.0.rc2
273
- documentation_uri: https://block.github.io/elasticgraph/api-docs/v1.0.0.rc2/
272
+ changelog_uri: https://github.com/block/elasticgraph/releases/tag/v1.0.0.rc4
273
+ documentation_uri: https://block.github.io/elasticgraph/api-docs/v1.0.0.rc4/
274
274
  homepage_uri: https://block.github.io/elasticgraph/
275
- source_code_uri: https://github.com/block/elasticgraph/tree/v1.0.0.rc2/elasticgraph-schema_definition
275
+ source_code_uri: https://github.com/block/elasticgraph/tree/v1.0.0.rc4/elasticgraph-schema_definition
276
276
  gem_category: local
277
277
  rdoc_options: []
278
278
  require_paths:
@@ -291,8 +291,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
291
291
  - !ruby/object:Gem::Version
292
292
  version: '0'
293
293
  requirements: []
294
- rubygems_version: 3.6.7
294
+ rubygems_version: 3.6.9
295
295
  specification_version: 4
296
- summary: ElasticGraph gem that provides the schema definition API and generates schema
297
- artifacts.
296
+ summary: Provides the ElasticGraph schema definition API.
298
297
  test_files: []