Ruby graphql-ruby: Difference between revisions
From wikinotes
(→Notes) |
|||
Line 92: | Line 92: | ||
</source> | </source> | ||
</blockquote><!-- Mutations --> | </blockquote><!-- Mutations --> | ||
Revision as of 20:58, 5 September 2021
graphql gem for ruby.
TODO:
needs revisiting
Documentation
wiki graphql docs https://graphql-ruby.org/guides API docs https://graphql-ruby.org/api-doc/1.12.8/ github https://github.com/rmosolgo/graphql-ruby homepage https://graphql-ruby.org/
Notes
graphql-ruby basics graphql-ruby fields graphql-ruby mutations graphql-ruby connections
Syntax
Objects
Fields with Arguments
class User < GraphQL::Schema::Object field :id, Integer # name, returntype field :age, Integer # name, returntype end class MyGraph < GraphQL::Schema::Object field :user, User, do |field| field.argument(:id, Integer, required: true) end endMutations
Mutations are graphql fields that trigger side effects.
- mutations return a hash, that contains all of the fields defined on it.
- mutations may optionally accept arguments
class MyMutation < GraphQL::Schema::RelayClassicMutation argument :username, String, required: true field :message, String, null: true # returns string, allows null field :errors, [String], null, false # returns list of strings, disallows null def resolve(username) # do thing that produces side effect { message: "Hello #{username}", errors: [] } end end class MyMutationRoot < GraphQL::Schema::RelayClassicMutation field :mymutation, mutation: MyMutation # TODO: needs arg?? end class MyGraph < GraphQL::Schema mutation(MyMutationRoot) end