Table of Contents
Last updated
Setting up Mutations
A mutation is something that “mutates” or changes the data in the server. In DB terms, if we need to change the data in a table using graphql we need mutations — be it an INSERT, UPDATE or DELETE. Only SELECTs are covered with a Query
.
So to add a new speaker to the database we need a mutation.
In the GraphQL language, a mutation is of the form
mutation AddSpeaker($name:String, $talkTitle:String) {
createSpeaker(name: $name, talkTitle:$talkTitle) {
success
errors
}
}
A set of “query” variables needs to be supplied to the GraphQL endpoint. Say for example,
{
"name": "John Doe",
"talkTitle": "Introduction to GraphQL in Ruby"
}
Read more about GraphQL mutations and its syntax in the specifications — https://graphql.org/learn/queries/#mutations.
For our little server to accept mutations, we need to make some changes and add more files for defining mutations. Lets see how, step-by-step.
Adding a Mutation root type
A mutation root MutationType
has to be created and it should then be added to our Schema, like the QueryType
that was added in the last post.
require 'graphql' | |
require_relative 'mutations/create_speaker' | |
class MutationType < GraphQL::Schema::Object | |
description "The mutation root of this schema" | |
field :createSpeaker, mutation: Mutations::CreateSpeaker | |
end |
require 'graphql' | |
require_relative 'query' | |
require_relative 'mutation' | |
class ConferenceAppSchema < GraphQL::Schema | |
query QueryType | |
mutation MutationType | |
end |