Query Variables

What is a variable in GraphQL context?

GraphQL has a first-class way to factor dynamic values out of the query, and pass them as a separate dictionary. These values are called variables. In our case, we are defining the object to be inserted as a mutation.

So let's define the graphql mutation to be used.

Open Todo/TodoVC.swift and add the following code at the end of file:

githubTodo/TodoVC.swift
// Add Todo to Cloud
private func addTodoMutationCloud(title: String){
apollo.perform(mutation: AddTodoMutation(todo: title, isPublic: false)) { (result, error) in
guard let data = result?.data else { return }
let newTodo = data.insertTodos!.returning.compactMap({GetMyTodosQuery.Data.Todo(id: $0.id, title: $0.title, createdAt: $0.createdAt, isCompleted: $0.isCompleted)})
self.todos.insert(contentsOf: newTodo, at: 0)
self.filteredTodos.insert(contentsOf: newTodo, at: 0)
// Update view
DispatchQueue.main.async {
let indexPaths = (0 ..< newTodo.count).map { IndexPath(row: $0, section: 0) }
self.todoTable.beginUpdates()
self.todoTable.insertRows(at: indexPaths , with: .automatic)
self.todoTable.endUpdates()
}
}
}

What does this mutation do?

The mutation inserts into todos table with the $objects variable being passed as one todo type.

Awesome! We have defined our first graphql mutation.

Close

Get Started with GraphQL Now

Hasura Cloud gives you a fully managed, production ready GraphQL API as a service to help you build modern apps faster.
Ready to get started?
Start for free on Hasura Cloud or you could contact our sales team for a detailed walk-through on how Hasura may benefit your business.
Stay in the know
Sign up for full access to our community highlights, new features, and occasional baby animal gifs! Oh, and we have a strict no-spam rule. โœŒ๏ธ