rails-graphql 0.2.1 → 1.0.0.beta

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.
Files changed (297) hide show
  1. checksums.yaml +4 -4
  2. data/ext/console.rb +18 -0
  3. data/ext/extconf.h +3 -0
  4. data/ext/extconf.rb +1 -54
  5. data/ext/gql_parser.c +646 -0
  6. data/ext/shared.c +482 -0
  7. data/ext/shared.h +177 -0
  8. data/lib/gql_parser.so +0 -0
  9. data/lib/rails/graphql/adapters/mysql_adapter.rb +59 -0
  10. data/lib/rails/graphql/adapters/pg_adapter.rb +25 -22
  11. data/lib/rails/graphql/adapters/sqlite_adapter.rb +17 -14
  12. data/lib/rails/graphql/alternative/field_set.rb +36 -0
  13. data/lib/rails/graphql/alternative/mutation.rb +17 -0
  14. data/lib/rails/graphql/alternative/query.rb +93 -0
  15. data/lib/rails/graphql/alternative/subscription.rb +17 -0
  16. data/lib/rails/graphql/alternative.rb +20 -0
  17. data/lib/rails/graphql/argument.rb +21 -24
  18. data/lib/rails/graphql/callback.rb +24 -9
  19. data/lib/rails/graphql/collectors/hash_collector.rb +14 -6
  20. data/lib/rails/graphql/collectors/idented_collector.rb +10 -7
  21. data/lib/rails/graphql/collectors/json_collector.rb +22 -17
  22. data/lib/rails/graphql/collectors.rb +4 -4
  23. data/lib/rails/graphql/config.rb +130 -15
  24. data/lib/rails/graphql/directive/cached_directive.rb +33 -0
  25. data/lib/rails/graphql/directive/deprecated_directive.rb +10 -10
  26. data/lib/rails/graphql/directive/include_directive.rb +5 -4
  27. data/lib/rails/graphql/directive/skip_directive.rb +5 -4
  28. data/lib/rails/graphql/directive.rb +118 -63
  29. data/lib/rails/graphql/errors.rb +33 -4
  30. data/lib/rails/graphql/event.rb +16 -5
  31. data/lib/rails/graphql/field/authorized_field.rb +19 -3
  32. data/lib/rails/graphql/field/input_field.rb +11 -10
  33. data/lib/rails/graphql/field/mutation_field.rb +42 -7
  34. data/lib/rails/graphql/field/output_field.rb +102 -13
  35. data/lib/rails/graphql/field/proxied_field.rb +31 -22
  36. data/lib/rails/graphql/field/resolved_field.rb +26 -24
  37. data/lib/rails/graphql/field/scoped_config.rb +10 -4
  38. data/lib/rails/graphql/field/subscription_field.rb +140 -0
  39. data/lib/rails/graphql/field/typed_field.rb +43 -22
  40. data/lib/rails/graphql/field.rb +70 -56
  41. data/lib/rails/graphql/global_id.rb +85 -0
  42. data/lib/rails/graphql/helpers/attribute_delegator.rb +5 -5
  43. data/lib/rails/graphql/helpers/inherited_collection/array.rb +50 -0
  44. data/lib/rails/graphql/helpers/inherited_collection/base.rb +43 -0
  45. data/lib/rails/graphql/helpers/inherited_collection/hash.rb +87 -0
  46. data/lib/rails/graphql/helpers/inherited_collection.rb +25 -76
  47. data/lib/rails/graphql/helpers/instantiable.rb +15 -0
  48. data/lib/rails/graphql/helpers/leaf_from_ar.rb +7 -7
  49. data/lib/rails/graphql/helpers/registerable.rb +44 -62
  50. data/lib/rails/graphql/helpers/unregisterable.rb +16 -0
  51. data/lib/rails/graphql/helpers/with_arguments.rb +31 -27
  52. data/lib/rails/graphql/helpers/with_assignment.rb +6 -6
  53. data/lib/rails/graphql/helpers/with_callbacks.rb +25 -8
  54. data/lib/rails/graphql/helpers/with_description.rb +71 -0
  55. data/lib/rails/graphql/helpers/with_directives.rb +54 -30
  56. data/lib/rails/graphql/helpers/with_events.rb +21 -23
  57. data/lib/rails/graphql/helpers/with_fields.rb +76 -22
  58. data/lib/rails/graphql/helpers/with_global_id.rb +22 -0
  59. data/lib/rails/graphql/helpers/with_name.rb +43 -0
  60. data/lib/rails/graphql/helpers/with_namespace.rb +7 -4
  61. data/lib/rails/graphql/helpers/with_owner.rb +8 -7
  62. data/lib/rails/graphql/helpers/with_schema_fields.rb +137 -55
  63. data/lib/rails/graphql/helpers/with_validator.rb +9 -9
  64. data/lib/rails/graphql/helpers.rb +10 -3
  65. data/lib/rails/graphql/introspection.rb +43 -36
  66. data/lib/rails/graphql/railtie.rb +88 -33
  67. data/lib/rails/graphql/railties/base_generator.rb +3 -9
  68. data/lib/rails/graphql/railties/channel.rb +157 -0
  69. data/lib/rails/graphql/railties/controller.rb +62 -17
  70. data/lib/rails/graphql/railties/controller_runtime.rb +5 -5
  71. data/lib/rails/graphql/railties/log_subscriber.rb +81 -14
  72. data/lib/rails/graphql/request/arguments.rb +24 -49
  73. data/lib/rails/graphql/request/backtrace.rb +191 -0
  74. data/lib/rails/graphql/request/component/field.rb +86 -65
  75. data/lib/rails/graphql/request/component/fragment.rb +72 -24
  76. data/lib/rails/graphql/request/component/operation/subscription.rb +164 -4
  77. data/lib/rails/graphql/request/component/operation.rb +63 -31
  78. data/lib/rails/graphql/request/component/spread.rb +68 -25
  79. data/lib/rails/graphql/request/component/typename.rb +27 -12
  80. data/lib/rails/graphql/request/component.rb +75 -36
  81. data/lib/rails/graphql/request/context.rb +18 -8
  82. data/lib/rails/graphql/request/errors.rb +16 -6
  83. data/lib/rails/graphql/request/event.rb +19 -8
  84. data/lib/rails/graphql/request/helpers/directives.rb +68 -27
  85. data/lib/rails/graphql/request/helpers/selection_set.rb +51 -25
  86. data/lib/rails/graphql/request/helpers/value_writers.rb +18 -16
  87. data/lib/rails/graphql/request/prepared_data.rb +98 -0
  88. data/lib/rails/graphql/request/steps/authorizable.rb +24 -14
  89. data/lib/rails/graphql/request/steps/organizable.rb +110 -48
  90. data/lib/rails/graphql/request/steps/{prepareable.rb → preparable.rb} +20 -7
  91. data/lib/rails/graphql/request/steps/{resolveable.rb → resolvable.rb} +15 -6
  92. data/lib/rails/graphql/request/strategy/cached_strategy.rb +64 -0
  93. data/lib/rails/graphql/request/strategy/dynamic_instance.rb +6 -6
  94. data/lib/rails/graphql/request/strategy/multi_query_strategy.rb +6 -13
  95. data/lib/rails/graphql/request/strategy/sequenced_strategy.rb +9 -9
  96. data/lib/rails/graphql/request/strategy.rb +131 -75
  97. data/lib/rails/graphql/request/subscription.rb +80 -0
  98. data/lib/rails/graphql/request.rb +305 -86
  99. data/lib/rails/graphql/schema.rb +240 -48
  100. data/lib/rails/graphql/shortcuts.rb +22 -3
  101. data/lib/rails/graphql/source/active_record/builders.rb +49 -35
  102. data/lib/rails/graphql/source/active_record_source.rb +70 -54
  103. data/lib/rails/graphql/source/base.rb +111 -0
  104. data/lib/rails/graphql/source/builder.rb +128 -0
  105. data/lib/rails/graphql/source/scoped_arguments.rb +31 -19
  106. data/lib/rails/graphql/source.rb +89 -213
  107. data/lib/rails/graphql/subscription/provider/action_cable.rb +112 -0
  108. data/lib/rails/graphql/subscription/provider/base.rb +191 -0
  109. data/lib/rails/graphql/subscription/provider.rb +18 -0
  110. data/lib/rails/graphql/subscription/store/base.rb +145 -0
  111. data/lib/rails/graphql/subscription/store/memory.rb +127 -0
  112. data/lib/rails/graphql/subscription/store.rb +19 -0
  113. data/lib/rails/graphql/subscription.rb +17 -0
  114. data/lib/rails/graphql/to_gql.rb +29 -32
  115. data/lib/rails/graphql/type/enum/directive_location_enum.rb +11 -11
  116. data/lib/rails/graphql/type/enum/type_kind_enum.rb +3 -3
  117. data/lib/rails/graphql/type/enum.rb +34 -48
  118. data/lib/rails/graphql/type/input.rb +74 -23
  119. data/lib/rails/graphql/type/interface.rb +16 -26
  120. data/lib/rails/graphql/type/object/directive_object.rb +4 -4
  121. data/lib/rails/graphql/type/object/enum_value_object.rb +3 -3
  122. data/lib/rails/graphql/type/object/field_object.rb +24 -6
  123. data/lib/rails/graphql/type/object/input_value_object.rb +3 -3
  124. data/lib/rails/graphql/type/object/schema_object.rb +5 -8
  125. data/lib/rails/graphql/type/object/type_object.rb +29 -19
  126. data/lib/rails/graphql/type/object.rb +26 -23
  127. data/lib/rails/graphql/type/scalar/any_scalar.rb +30 -0
  128. data/lib/rails/graphql/type/scalar/bigint_scalar.rb +5 -5
  129. data/lib/rails/graphql/type/scalar/binary_scalar.rb +3 -3
  130. data/lib/rails/graphql/type/scalar/boolean_scalar.rb +8 -8
  131. data/lib/rails/graphql/type/scalar/date_scalar.rb +3 -3
  132. data/lib/rails/graphql/type/scalar/date_time_scalar.rb +3 -3
  133. data/lib/rails/graphql/type/scalar/decimal_scalar.rb +3 -3
  134. data/lib/rails/graphql/type/scalar/float_scalar.rb +5 -5
  135. data/lib/rails/graphql/type/scalar/id_scalar.rb +6 -5
  136. data/lib/rails/graphql/type/scalar/int_scalar.rb +6 -5
  137. data/lib/rails/graphql/type/scalar/json_scalar.rb +39 -0
  138. data/lib/rails/graphql/type/scalar/string_scalar.rb +18 -4
  139. data/lib/rails/graphql/type/scalar/time_scalar.rb +5 -5
  140. data/lib/rails/graphql/type/scalar.rb +25 -22
  141. data/lib/rails/graphql/type/union.rb +14 -16
  142. data/lib/rails/graphql/type.rb +34 -25
  143. data/lib/rails/graphql/type_map.rb +256 -164
  144. data/lib/rails/graphql/uri.rb +166 -0
  145. data/lib/rails/graphql/version.rb +15 -3
  146. data/lib/rails/graphql.rake +3 -0
  147. data/lib/rails/graphql.rb +85 -52
  148. data/lib/rails-graphql.rb +1 -1
  149. data/test/assets/en.yml +29 -0
  150. data/test/assets/introspection-mem.txt +1 -1
  151. data/test/assets/mem.gql +18 -45
  152. data/test/assets/mysql.gql +392 -0
  153. data/test/assets/sqlite.gql +21 -12
  154. data/test/assets/translate.gql +335 -0
  155. data/test/config.rb +18 -8
  156. data/test/graphql/schema_test.rb +12 -19
  157. data/test/graphql/source_test.rb +8 -75
  158. data/test/graphql/type/enum_test.rb +207 -203
  159. data/test/graphql/type/input_test.rb +14 -9
  160. data/test/graphql/type/interface_test.rb +4 -4
  161. data/test/graphql/type/scalar/any_scalar_test.rb +38 -0
  162. data/test/graphql/type/scalar/boolean_scalar_test.rb +6 -3
  163. data/test/graphql/type/scalar/json_scalar_test.rb +23 -0
  164. data/test/graphql/type_map_test.rb +51 -66
  165. data/test/graphql/type_test.rb +0 -19
  166. data/test/graphql_test.rb +1 -1
  167. data/test/integration/{authorization/authorization_test.rb → authorization_test.rb} +40 -14
  168. data/test/integration/config.rb +36 -3
  169. data/test/integration/customization_test.rb +39 -0
  170. data/test/integration/global_id_test.rb +99 -0
  171. data/test/integration/memory/star_wars_introspection_test.rb +24 -16
  172. data/test/integration/memory/star_wars_query_test.rb +54 -3
  173. data/test/integration/memory/star_wars_validation_test.rb +1 -1
  174. data/test/integration/mysql/star_wars_introspection_test.rb +25 -0
  175. data/test/integration/persisted_query_test.rb +87 -0
  176. data/test/integration/resolver_precedence_test.rb +154 -0
  177. data/test/integration/schemas/memory.rb +22 -7
  178. data/test/integration/schemas/mysql.rb +62 -0
  179. data/test/integration/schemas/sqlite.rb +21 -12
  180. data/test/integration/sqlite/star_wars_global_id_test.rb +83 -0
  181. data/test/integration/sqlite/star_wars_introspection_test.rb +10 -0
  182. data/test/integration/sqlite/star_wars_query_test.rb +14 -1
  183. data/test/integration/translate_test.rb +61 -0
  184. data/test/test_ext.rb +16 -13
  185. metadata +108 -157
  186. data/ext/depend +0 -3
  187. data/ext/graphqlparser/Ast.cpp +0 -346
  188. data/ext/graphqlparser/Ast.h +0 -1214
  189. data/ext/graphqlparser/AstNode.h +0 -36
  190. data/ext/graphqlparser/AstVisitor.h +0 -137
  191. data/ext/graphqlparser/GraphQLParser.cpp +0 -76
  192. data/ext/graphqlparser/GraphQLParser.h +0 -55
  193. data/ext/graphqlparser/JsonVisitor.cpp +0 -161
  194. data/ext/graphqlparser/JsonVisitor.cpp.inc +0 -456
  195. data/ext/graphqlparser/JsonVisitor.h +0 -121
  196. data/ext/graphqlparser/JsonVisitor.h.inc +0 -110
  197. data/ext/graphqlparser/VERSION +0 -1
  198. data/ext/graphqlparser/c/GraphQLAst.cpp +0 -324
  199. data/ext/graphqlparser/c/GraphQLAst.h +0 -180
  200. data/ext/graphqlparser/c/GraphQLAstForEachConcreteType.h +0 -44
  201. data/ext/graphqlparser/c/GraphQLAstNode.cpp +0 -25
  202. data/ext/graphqlparser/c/GraphQLAstNode.h +0 -33
  203. data/ext/graphqlparser/c/GraphQLAstToJSON.cpp +0 -21
  204. data/ext/graphqlparser/c/GraphQLAstToJSON.h +0 -24
  205. data/ext/graphqlparser/c/GraphQLAstVisitor.cpp +0 -55
  206. data/ext/graphqlparser/c/GraphQLAstVisitor.h +0 -53
  207. data/ext/graphqlparser/c/GraphQLParser.cpp +0 -35
  208. data/ext/graphqlparser/c/GraphQLParser.h +0 -54
  209. data/ext/graphqlparser/dump_json_ast.cpp +0 -48
  210. data/ext/graphqlparser/lexer.lpp +0 -324
  211. data/ext/graphqlparser/parser.ypp +0 -693
  212. data/ext/graphqlparser/parsergen/lexer.cpp +0 -2633
  213. data/ext/graphqlparser/parsergen/lexer.h +0 -528
  214. data/ext/graphqlparser/parsergen/location.hh +0 -189
  215. data/ext/graphqlparser/parsergen/parser.tab.cpp +0 -3300
  216. data/ext/graphqlparser/parsergen/parser.tab.hpp +0 -646
  217. data/ext/graphqlparser/parsergen/position.hh +0 -179
  218. data/ext/graphqlparser/parsergen/stack.hh +0 -156
  219. data/ext/graphqlparser/syntaxdefs.h +0 -19
  220. data/ext/libgraphqlparser/AstNode.h +0 -36
  221. data/ext/libgraphqlparser/CMakeLists.txt +0 -148
  222. data/ext/libgraphqlparser/CONTRIBUTING.md +0 -23
  223. data/ext/libgraphqlparser/GraphQLParser.cpp +0 -76
  224. data/ext/libgraphqlparser/GraphQLParser.h +0 -55
  225. data/ext/libgraphqlparser/JsonVisitor.cpp +0 -161
  226. data/ext/libgraphqlparser/JsonVisitor.h +0 -121
  227. data/ext/libgraphqlparser/LICENSE +0 -22
  228. data/ext/libgraphqlparser/README.clang-tidy +0 -7
  229. data/ext/libgraphqlparser/README.md +0 -84
  230. data/ext/libgraphqlparser/ast/ast.ast +0 -203
  231. data/ext/libgraphqlparser/ast/ast.py +0 -61
  232. data/ext/libgraphqlparser/ast/c.py +0 -100
  233. data/ext/libgraphqlparser/ast/c.pyc +0 -0
  234. data/ext/libgraphqlparser/ast/c_impl.py +0 -61
  235. data/ext/libgraphqlparser/ast/c_impl.pyc +0 -0
  236. data/ext/libgraphqlparser/ast/c_visitor_impl.py +0 -39
  237. data/ext/libgraphqlparser/ast/c_visitor_impl.pyc +0 -0
  238. data/ext/libgraphqlparser/ast/casing.py +0 -26
  239. data/ext/libgraphqlparser/ast/casing.pyc +0 -0
  240. data/ext/libgraphqlparser/ast/cxx.py +0 -197
  241. data/ext/libgraphqlparser/ast/cxx.pyc +0 -0
  242. data/ext/libgraphqlparser/ast/cxx_impl.py +0 -61
  243. data/ext/libgraphqlparser/ast/cxx_impl.pyc +0 -0
  244. data/ext/libgraphqlparser/ast/cxx_json_visitor_header.py +0 -42
  245. data/ext/libgraphqlparser/ast/cxx_json_visitor_header.pyc +0 -0
  246. data/ext/libgraphqlparser/ast/cxx_json_visitor_impl.py +0 -80
  247. data/ext/libgraphqlparser/ast/cxx_json_visitor_impl.pyc +0 -0
  248. data/ext/libgraphqlparser/ast/cxx_visitor.py +0 -64
  249. data/ext/libgraphqlparser/ast/cxx_visitor.pyc +0 -0
  250. data/ext/libgraphqlparser/ast/js.py +0 -65
  251. data/ext/libgraphqlparser/ast/license.py +0 -10
  252. data/ext/libgraphqlparser/ast/license.pyc +0 -0
  253. data/ext/libgraphqlparser/c/GraphQLAstNode.cpp +0 -25
  254. data/ext/libgraphqlparser/c/GraphQLAstNode.h +0 -33
  255. data/ext/libgraphqlparser/c/GraphQLAstToJSON.cpp +0 -21
  256. data/ext/libgraphqlparser/c/GraphQLAstToJSON.h +0 -24
  257. data/ext/libgraphqlparser/c/GraphQLAstVisitor.cpp +0 -55
  258. data/ext/libgraphqlparser/c/GraphQLAstVisitor.h +0 -53
  259. data/ext/libgraphqlparser/c/GraphQLParser.cpp +0 -35
  260. data/ext/libgraphqlparser/c/GraphQLParser.h +0 -54
  261. data/ext/libgraphqlparser/clang-tidy-all.sh +0 -3
  262. data/ext/libgraphqlparser/cmake/version.cmake +0 -16
  263. data/ext/libgraphqlparser/dump_json_ast.cpp +0 -48
  264. data/ext/libgraphqlparser/go/README.md +0 -20
  265. data/ext/libgraphqlparser/go/callbacks.go +0 -18
  266. data/ext/libgraphqlparser/go/gotest.go +0 -64
  267. data/ext/libgraphqlparser/lexer.lpp +0 -324
  268. data/ext/libgraphqlparser/libgraphqlparser.pc.in +0 -11
  269. data/ext/libgraphqlparser/parser.ypp +0 -693
  270. data/ext/libgraphqlparser/parsergen/lexer.cpp +0 -2633
  271. data/ext/libgraphqlparser/parsergen/lexer.h +0 -528
  272. data/ext/libgraphqlparser/parsergen/location.hh +0 -189
  273. data/ext/libgraphqlparser/parsergen/parser.tab.cpp +0 -3300
  274. data/ext/libgraphqlparser/parsergen/parser.tab.hpp +0 -646
  275. data/ext/libgraphqlparser/parsergen/position.hh +0 -179
  276. data/ext/libgraphqlparser/parsergen/stack.hh +0 -156
  277. data/ext/libgraphqlparser/python/CMakeLists.txt +0 -14
  278. data/ext/libgraphqlparser/python/README.md +0 -5
  279. data/ext/libgraphqlparser/python/example.py +0 -31
  280. data/ext/libgraphqlparser/syntaxdefs.h +0 -19
  281. data/ext/libgraphqlparser/test/BuildCAPI.c +0 -5
  282. data/ext/libgraphqlparser/test/CMakeLists.txt +0 -25
  283. data/ext/libgraphqlparser/test/JsonVisitorTests.cpp +0 -28
  284. data/ext/libgraphqlparser/test/ParserTests.cpp +0 -352
  285. data/ext/libgraphqlparser/test/kitchen-sink.graphql +0 -59
  286. data/ext/libgraphqlparser/test/kitchen-sink.json +0 -1
  287. data/ext/libgraphqlparser/test/schema-kitchen-sink.graphql +0 -78
  288. data/ext/libgraphqlparser/test/schema-kitchen-sink.json +0 -1
  289. data/ext/libgraphqlparser/test/valgrind.supp +0 -33
  290. data/ext/version.cpp +0 -21
  291. data/lib/graphqlparser.so +0 -0
  292. data/lib/rails/graphql/native/functions.rb +0 -38
  293. data/lib/rails/graphql/native/location.rb +0 -41
  294. data/lib/rails/graphql/native/pointers.rb +0 -23
  295. data/lib/rails/graphql/native/visitor.rb +0 -349
  296. data/lib/rails/graphql/native.rb +0 -56
  297. data/test/integration/schemas/authorization.rb +0 -12
data/test/assets/mem.gql CHANGED
@@ -3,34 +3,10 @@ schema {
3
3
  mutation: _Mutation
4
4
  }
5
5
 
6
- """
7
- The Bigint scalar type represents a signed numeric non‐fractional value.
8
- It can go beyond the Int 32‐bit limit, but it's exchanged as a string.
9
- """
10
- scalar Bigint
11
-
12
- """
13
- The Binary scalar type represents a Base64 string.
14
- Normally used to share files and uploads.
15
- """
16
- scalar Binary
17
-
18
6
  "The Boolean scalar type represents true or false."
19
7
  scalar Boolean
20
8
 
21
- "The Date scalar type represents a ISO 8601 string value."
22
- scalar Date
23
-
24
- "The DateTime scalar type represents a ISO 8601 string value."
25
- scalar DateTime
26
-
27
- """
28
- The Decimal scalar type represents signed fractional values with extra precision.
29
- The values are exchange as string.
30
- """
31
- scalar Decimal
32
-
33
- "The Float scalar type represents signed double‐precision fractional values."
9
+ "The Float scalar type represents signed double-precision fractional values."
34
10
  scalar Float
35
11
 
36
12
  """
@@ -39,21 +15,15 @@ way as a String but it accepts both numeric and string based values as input.
39
15
  """
40
16
  scalar ID
41
17
 
42
- "The Int scalar type represents a signed 32bit numeric nonfractional value."
18
+ "The Int scalar type represents a signed 32-bit numeric non-fractional value."
43
19
  scalar Int
44
20
 
45
21
  """
46
- The String scalar type represents textual data, represented as UTF8 character
22
+ The String scalar type represents textual data, represented as UTF-8 character
47
23
  sequences.
48
24
  """
49
25
  scalar String
50
26
 
51
- """
52
- The Time scalar type that represents a distance in time using hours,
53
- minutes, seconds, and miliseconds.
54
- """
55
- scalar Time
56
-
57
27
  "One of the films in the Star Wars Trilogy"
58
28
  enum Episode {
59
29
  "Released in 1977."
@@ -174,19 +144,19 @@ interface Character {
174
144
  "A mechanical creature in the Star Wars universe"
175
145
  # Assigned to MemoryTest::Droid class
176
146
  type Droid implements Character {
177
- "The id of the character"
147
+ "The id of the droid"
178
148
  id: ID!
179
149
 
180
- "The name of the character"
150
+ "The name of the droid"
181
151
  name: String
182
152
 
183
- "The friends of the character, or an empty list if they have none"
153
+ "The friends of the droid, or an empty list if they have none"
184
154
  friends: [Character]
185
155
 
186
156
  "Which movies they appear in"
187
157
  appearsIn: [Episode]
188
158
 
189
- "All secrets about their past"
159
+ "Construction date and the name of the designer"
190
160
  secretBackstory: String
191
161
 
192
162
  "The primary function of the droid"
@@ -196,23 +166,26 @@ type Droid implements Character {
196
166
  "A humanoid creature in the Star Wars universe"
197
167
  # Assigned to MemoryTest::Human class
198
168
  type Human implements Character {
199
- "The id of the character"
169
+ "The id of the human"
200
170
  id: ID!
201
171
 
202
- "The name of the character"
172
+ "The name of the human"
203
173
  name: String
204
174
 
205
- "The friends of the character, or an empty list if they have none"
175
+ "The friends of the human, or an empty list if they have none"
206
176
  friends: [Character]
207
177
 
208
178
  "Which movies they appear in"
209
179
  appearsIn: [Episode]
210
180
 
211
- "All secrets about their past"
181
+ "Where are they from and how they came to be who they are"
212
182
  secretBackstory: String
213
183
 
214
184
  "The home planet of the human, or null if unknown"
215
185
  homePlanet: String
186
+
187
+ "A greeting phrase from this person to someone"
188
+ greeting(name: String!): String
216
189
  }
217
190
 
218
191
  type _Mutation {
@@ -260,7 +233,7 @@ type _Query {
260
233
  Directives provide a way to describe alternate runtime execution
261
234
  and type validation behavior in a GraphQL document.
262
235
 
263
- In some cases, you need to provide options to alter GraphQLs execution
236
+ In some cases, you need to provide options to alter GraphQL's execution
264
237
  behavior in ways field arguments will not suffice, such as conditionally
265
238
  including or skipping a field. Directives provide this by describing
266
239
  additional information to the executor.
@@ -329,8 +302,8 @@ type __InputValue {
329
302
  }
330
303
 
331
304
  """
332
- A GraphQL services collective type system capabilities are referred
333
- to as that services "schema". A schema is defined in terms of the
305
+ A GraphQL service's collective type system capabilities are referred
306
+ to as that service's "schema". A schema is defined in terms of the
334
307
  types and directives it supports as well as the root operation types
335
308
  for each kind of operation: query, mutation, and subscription; this
336
309
  determines the place in the type system where those operations begin.
@@ -397,7 +370,7 @@ type __Type {
397
370
  }
398
371
 
399
372
  """
400
- Indicate deprecated portions of a GraphQL services schema, such as deprecated
373
+ Indicate deprecated portions of a GraphQL service's schema, such as deprecated
401
374
  fields on a type or deprecated enum values.
402
375
  """
403
376
  directive @deprecated(
@@ -0,0 +1,392 @@
1
+ schema {
2
+ query: _Query
3
+ mutation: _Mutation
4
+ }
5
+
6
+ "The Any scalar type allows anything for both input and output."
7
+ scalar Any
8
+
9
+ """
10
+ The Bigint scalar type represents a signed numeric non-fractional value.
11
+ It can go beyond the Int 32-bit limit, but it's exchanged as a string.
12
+ """
13
+ scalar Bigint
14
+
15
+ """
16
+ The Binary scalar type represents a Base64 string.
17
+ Normally used to share files and uploads.
18
+ """
19
+ scalar Binary
20
+
21
+ "The Boolean scalar type represents true or false."
22
+ scalar Boolean
23
+
24
+ "The Date scalar type represents a ISO 8601 string value."
25
+ scalar Date
26
+
27
+ "The DateTime scalar type represents a ISO 8601 string value."
28
+ scalar DateTime
29
+
30
+ """
31
+ The Decimal scalar type represents signed fractional values with extra precision.
32
+ The values are exchange as string.
33
+ """
34
+ scalar Decimal
35
+
36
+ "The Float scalar type represents signed double-precision fractional values."
37
+ scalar Float
38
+
39
+ """
40
+ The ID scalar type represents a unique identifier and it is serialized in the same
41
+ way as a String but it accepts both numeric and string based values as input.
42
+ """
43
+ scalar ID
44
+
45
+ "The Int scalar type represents a signed 32-bit numeric non-fractional value."
46
+ scalar Int
47
+
48
+ """
49
+ The JSON scalar type represents an unstructured JSON data
50
+ with all its available kyes and values.
51
+ """
52
+ scalar JSON
53
+
54
+ """
55
+ The String scalar type represents textual data, represented as UTF-8 character
56
+ sequences.
57
+ """
58
+ scalar String
59
+
60
+ """
61
+ The Time scalar type that represents a distance in time using hours,
62
+ minutes, seconds, and miliseconds.
63
+ """
64
+ scalar Time
65
+
66
+ "The valid locations that a directive may be placed."
67
+ enum __DirectiveLocation {
68
+ "Mark as a executable directive usable on query objects."
69
+ QUERY
70
+
71
+ "Mark as a executable directive usable on mutation objects."
72
+ MUTATION
73
+
74
+ "Mark as a executable directive usable on subscription objects."
75
+ SUBSCRIPTION
76
+
77
+ "Mark as a executable directive usable on field objects."
78
+ FIELD
79
+
80
+ "Mark as a executable directive usable on fragment definition objects."
81
+ FRAGMENT_DEFINITION
82
+
83
+ "Mark as a executable directive usable on fragment spread objects."
84
+ FRAGMENT_SPREAD
85
+
86
+ "Mark as a executable directive usable on inline fragment objects."
87
+ INLINE_FRAGMENT
88
+
89
+ "Mark as a type system directive usable on schema definitions."
90
+ SCHEMA
91
+
92
+ "Mark as a type system directive usable on scalar definitions."
93
+ SCALAR
94
+
95
+ "Mark as a type system directive usable on object definitions."
96
+ OBJECT
97
+
98
+ "Mark as a type system directive usable on field definitions."
99
+ FIELD_DEFINITION
100
+
101
+ "Mark as a type system directive usable on argument definitions."
102
+ ARGUMENT_DEFINITION
103
+
104
+ "Mark as a type system directive usable on interface definitions."
105
+ INTERFACE
106
+
107
+ "Mark as a type system directive usable on union definitions."
108
+ UNION
109
+
110
+ "Mark as a type system directive usable on enum definitions."
111
+ ENUM
112
+
113
+ "Mark as a type system directive usable on enum value definitions."
114
+ ENUM_VALUE
115
+
116
+ "Mark as a type system directive usable on input object definitions."
117
+ INPUT_OBJECT
118
+
119
+ "Mark as a type system directive usable on input field definitions."
120
+ INPUT_FIELD_DEFINITION
121
+ }
122
+
123
+ """
124
+ The fundamental unit of any GraphQL Schema is the type.
125
+ This enum enlist all the valid base types.
126
+ """
127
+ enum __TypeKind {
128
+ "Scalar types represent primitive leaf values in a GraphQL type system.\n"
129
+ SCALAR
130
+
131
+ "Objects represent a list of named fields, each of which yield a value of a\nspecific type.\n"
132
+ OBJECT
133
+
134
+ "Interfaces represent a list of named fields and their types.\n"
135
+ INTERFACE
136
+
137
+ "Unions represent an object that could be one of a list of GraphQL Object types.\n"
138
+ UNION
139
+
140
+ "Enum types, like scalar types, also represent leaf values in a GraphQL\ntype system. However Enum types describe the set of possible values.\n"
141
+ ENUM
142
+
143
+ "Objects represent a list of named fields, each of which yield a value of\na specific type.\n"
144
+ INPUT_OBJECT
145
+
146
+ "A GraphQL list is a special collection type which declares the type of\neach item in the List (referred to as the item type of the list).\n"
147
+ LIST
148
+
149
+ "This type wraps an underlying type, and this type acts identically to that wrapped\ntype, with the exception that null is not a valid response for the wrapping type.\n"
150
+ NON_NULL
151
+ }
152
+
153
+ # Assigned to Jedi class
154
+ input JediInput {
155
+ id: ID
156
+
157
+ jediTypeId: ID
158
+
159
+ name: String
160
+
161
+ _delete: Boolean = false
162
+ }
163
+
164
+ # Assigned to JediType class
165
+ input JediTypeInput {
166
+ id: ID
167
+
168
+ name: String
169
+
170
+ _delete: Boolean = false
171
+
172
+ jediAttributes: [JediInput!]
173
+ }
174
+
175
+ # Assigned to Jedi class
176
+ type Jedi {
177
+ id: ID!
178
+
179
+ jediTypeId: ID
180
+
181
+ name: String
182
+
183
+ jediType: JediType
184
+ }
185
+
186
+ # Assigned to JediType class
187
+ type JediType {
188
+ id: ID!
189
+
190
+ name: String
191
+
192
+ jedi: [Jedi!]!
193
+ }
194
+
195
+ type _Mutation {
196
+ createJediType(jediType: JediTypeInput!): JediType!
197
+
198
+ updateJediType(id: ID!, jediType: JediTypeInput!): JediType!
199
+
200
+ deleteJediType(id: ID!): Boolean!
201
+
202
+ createJedi(jedi: JediInput!): Jedi!
203
+
204
+ updateJedi(id: ID!, jedi: JediInput!): Jedi!
205
+
206
+ deleteJedi(id: ID!): Boolean!
207
+ }
208
+
209
+ type _Query {
210
+ __schema: __Schema!
211
+
212
+ __type(name: String!): __Type
213
+
214
+ jediTypes(order: String): [JediType!]!
215
+
216
+ jediType(id: ID!): JediType!
217
+
218
+ jedis: [Jedi!]!
219
+
220
+ jedi(id: ID!): Jedi!
221
+ }
222
+
223
+ """
224
+ Directives provide a way to describe alternate runtime execution
225
+ and type validation behavior in a GraphQL document.
226
+
227
+ In some cases, you need to provide options to alter GraphQL's execution
228
+ behavior in ways field arguments will not suffice, such as conditionally
229
+ including or skipping a field. Directives provide this by describing
230
+ additional information to the executor.
231
+ """
232
+ # Assigned to Rails::GraphQL::Directive class
233
+ type __Directive {
234
+ name: String!
235
+
236
+ description: String
237
+
238
+ locations: [__DirectiveLocation!]!
239
+
240
+ args: [__InputValue!]!
241
+ }
242
+
243
+ """
244
+ One of the values of an Enum object. It is unique within the Enum set
245
+ of values. It's a string representation, not a numeric representation,
246
+ of a value kept as all caps (ie. ONE_VALUE).
247
+ """
248
+ type __EnumValue {
249
+ name: String!
250
+
251
+ description: String
252
+
253
+ isDeprecated: Boolean!
254
+
255
+ deprecationReason: String
256
+ }
257
+
258
+ """
259
+ Fields are the elements that compose both Objects and Interfaces. Each
260
+ field in these other objects may contain arguments and always yields
261
+ a value of a specific type.
262
+ """
263
+ # Assigned to Rails::GraphQL::Field class
264
+ type __Field {
265
+ name: String!
266
+
267
+ description: String
268
+
269
+ args: [__InputValue!]!
270
+
271
+ type: __Type!
272
+
273
+ isDeprecated: Boolean!
274
+
275
+ deprecationReason: String
276
+ }
277
+
278
+ """
279
+ Alongside with scalars and enums, input value objects allow the user
280
+ to provide values to arguments on fields and directives. Different
281
+ from those, input values accepts a list of keyed values, instead of
282
+ a single value.
283
+ """
284
+ # Assigned to Rails::GraphQL::Field::InputField class
285
+ type __InputValue {
286
+ name: String!
287
+
288
+ description: String
289
+
290
+ type: __Type!
291
+
292
+ defaultValue: String
293
+ }
294
+
295
+ """
296
+ A GraphQL service's collective type system capabilities are referred
297
+ to as that service's "schema". A schema is defined in terms of the
298
+ types and directives it supports as well as the root operation types
299
+ for each kind of operation: query, mutation, and subscription; this
300
+ determines the place in the type system where those operations begin.
301
+ """
302
+ # Assigned to Rails::GraphQL::Schema class
303
+ type __Schema {
304
+ types: [__Type!]!
305
+
306
+ queryType: __Type!
307
+
308
+ mutationType: __Type
309
+
310
+ subscriptionType: __Type
311
+
312
+ directives: [__Directive!]!
313
+ }
314
+
315
+ """
316
+ The fundamental unit of any GraphQL Schema is the type. There are six
317
+ kinds of named type definitions in GraphQL, and two wrapping types.
318
+
319
+ The most basic type is a +Scalar+. A scalar represents a primitive value,
320
+ like a string or an integer.
321
+
322
+ +Scalars+ and +Enums+ form the leaves in response trees; the intermediate
323
+ levels are +Object+ types, which define a set of fields.
324
+
325
+ An +Interface+ defines a list of fields; +Object+ types that implement
326
+ that interface are guaranteed to implement those fields.
327
+
328
+ A +Union+ defines a list of possible types; similar to interfaces,
329
+ whenever the type system claims a union will be returned, one of the
330
+ possible types will be returned.
331
+
332
+ Finally, oftentimes it is useful to provide complex structs as inputs
333
+ to GraphQL field arguments or variables; the +Input Object+ type allows
334
+ the schema to define exactly what data is expected.
335
+ """
336
+ # Assigned to Rails::GraphQL::Type class
337
+ type __Type {
338
+ kind: __TypeKind!
339
+
340
+ name: String
341
+
342
+ description: String
343
+
344
+ "OBJECT and INTERFACE only"
345
+ fields(includeDeprecated: Boolean = false): [__Field!]
346
+
347
+ "OBJECT only"
348
+ interfaces: [__Type!]
349
+
350
+ "INTERFACE and UNION only"
351
+ possibleTypes: [__Type!]
352
+
353
+ "ENUM only"
354
+ enumValues(includeDeprecated: Boolean = false): [__EnumValue!]
355
+
356
+ "INPUT_OBJECT only"
357
+ inputFields: [__InputValue!]
358
+
359
+ "NON_NULL and LIST only"
360
+ ofType: __Type
361
+ }
362
+
363
+ """
364
+ Indicate deprecated portions of a GraphQL service's schema, such as deprecated
365
+ fields on a type or deprecated enum values.
366
+ """
367
+ directive @deprecated(
368
+
369
+ """
370
+ Explain why the underlying element was marked as deprecated. If possible,
371
+ indicate what element should be used instead. This description is formatted
372
+ using Markdown syntax (as specified by [CommonMark](http://commonmark.org/)).
373
+ """
374
+ reason: String
375
+
376
+ ) on FIELD_DEFINITION | ENUM_VALUE
377
+
378
+ "Allows for conditional inclusion during execution as described by the if argument."
379
+ directive @include(
380
+
381
+ "When false, the underlying element will be automatically marked as null."
382
+ if: Boolean!
383
+
384
+ ) on FIELD | FRAGMENT_SPREAD | INLINE_FRAGMENT
385
+
386
+ "Allows for conditional exclusion during execution as described by the if argument."
387
+ directive @skip(
388
+
389
+ "When true, the underlying element will be automatically marked as null."
390
+ if: Boolean!
391
+
392
+ ) on FIELD | FRAGMENT_SPREAD | INLINE_FRAGMENT
@@ -3,9 +3,12 @@ schema {
3
3
  mutation: _Mutation
4
4
  }
5
5
 
6
+ "The Any scalar type allows anything for both input and output."
7
+ scalar Any
8
+
6
9
  """
7
- The Bigint scalar type represents a signed numeric nonfractional value.
8
- It can go beyond the Int 32bit limit, but it's exchanged as a string.
10
+ The Bigint scalar type represents a signed numeric non-fractional value.
11
+ It can go beyond the Int 32-bit limit, but it's exchanged as a string.
9
12
  """
10
13
  scalar Bigint
11
14
 
@@ -30,7 +33,7 @@ The values are exchange as string.
30
33
  """
31
34
  scalar Decimal
32
35
 
33
- "The Float scalar type represents signed doubleprecision fractional values."
36
+ "The Float scalar type represents signed double-precision fractional values."
34
37
  scalar Float
35
38
 
36
39
  """
@@ -39,11 +42,17 @@ way as a String but it accepts both numeric and string based values as input.
39
42
  """
40
43
  scalar ID
41
44
 
42
- "The Int scalar type represents a signed 32bit numeric nonfractional value."
45
+ "The Int scalar type represents a signed 32-bit numeric non-fractional value."
43
46
  scalar Int
44
47
 
45
48
  """
46
- The String scalar type represents textual data, represented as UTF‐8 character
49
+ The JSON scalar type represents an unstructured JSON data
50
+ with all its available kyes and values.
51
+ """
52
+ scalar JSON
53
+
54
+ """
55
+ The String scalar type represents textual data, represented as UTF-8 character
47
56
  sequences.
48
57
  """
49
58
  scalar String
@@ -147,7 +156,7 @@ input LiteBaseInput {
147
156
 
148
157
  factionId: ID
149
158
 
150
- name: String
159
+ name: String!
151
160
 
152
161
  planet: String
153
162
 
@@ -184,7 +193,7 @@ type LiteBase {
184
193
 
185
194
  factionId: ID
186
195
 
187
- name: String
196
+ name: String!
188
197
 
189
198
  planet: String
190
199
 
@@ -242,7 +251,7 @@ type _Query {
242
251
 
243
252
  liteFaction(id: ID!): LiteFaction!
244
253
 
245
- liteBases: [LiteBase!]!
254
+ liteBases(order: String = "desc"): [LiteBase!]!
246
255
 
247
256
  liteBase(id: ID!): LiteBase!
248
257
 
@@ -255,7 +264,7 @@ type _Query {
255
264
  Directives provide a way to describe alternate runtime execution
256
265
  and type validation behavior in a GraphQL document.
257
266
 
258
- In some cases, you need to provide options to alter GraphQLs execution
267
+ In some cases, you need to provide options to alter GraphQL's execution
259
268
  behavior in ways field arguments will not suffice, such as conditionally
260
269
  including or skipping a field. Directives provide this by describing
261
270
  additional information to the executor.
@@ -324,8 +333,8 @@ type __InputValue {
324
333
  }
325
334
 
326
335
  """
327
- A GraphQL services collective type system capabilities are referred
328
- to as that services "schema". A schema is defined in terms of the
336
+ A GraphQL service's collective type system capabilities are referred
337
+ to as that service's "schema". A schema is defined in terms of the
329
338
  types and directives it supports as well as the root operation types
330
339
  for each kind of operation: query, mutation, and subscription; this
331
340
  determines the place in the type system where those operations begin.
@@ -392,7 +401,7 @@ type __Type {
392
401
  }
393
402
 
394
403
  """
395
- Indicate deprecated portions of a GraphQL services schema, such as deprecated
404
+ Indicate deprecated portions of a GraphQL service's schema, such as deprecated
396
405
  fields on a type or deprecated enum values.
397
406
  """
398
407
  directive @deprecated(