elasticgraph-schema_definition 1.0.0.rc3 → 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 +4 -4
- data/README.md +41 -0
- data/lib/elastic_graph/schema_definition/schema_elements/field.rb +25 -1
- metadata +24 -25
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3544f8478716a2ee30ea3d267460f02878cf374c78f5448b136b6217b76bfdbf
|
4
|
+
data.tar.gz: 724259a4adbb18b3f3c993729ab8ea19c14c78242d06669556dd34cca112d88c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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
|
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.
|
4
|
+
version: 1.0.0.rc4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Myron Marston
|
@@ -17,70 +17,70 @@ dependencies:
|
|
17
17
|
requirements:
|
18
18
|
- - '='
|
19
19
|
- !ruby/object:Gem::Version
|
20
|
-
version: 1.0.0.
|
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.
|
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.
|
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.
|
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.
|
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.
|
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.
|
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.
|
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.
|
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.
|
83
|
+
version: 1.0.0.rc4
|
84
84
|
- !ruby/object:Gem::Dependency
|
85
85
|
name: graphql
|
86
86
|
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.
|
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.
|
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.
|
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.
|
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.
|
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.
|
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.
|
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.
|
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.
|
273
|
-
documentation_uri: https://block.github.io/elasticgraph/api-docs/v1.0.0.
|
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.
|
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.
|
294
|
+
rubygems_version: 3.6.9
|
295
295
|
specification_version: 4
|
296
|
-
summary:
|
297
|
-
artifacts.
|
296
|
+
summary: Provides the ElasticGraph schema definition API.
|
298
297
|
test_files: []
|