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:
// Add Todo to Cloudprivate func addTodoMutationCloud(title: String){apollo.perform(mutation: AddTodoMutation(todo: title, isPublic: false)) { (result, error) inguard 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 viewDispatchQueue.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.
Did you find this page helpful?
Start with GraphQL on Hasura for Free
- Build apps and APIs 10x faster
- Built-in authorization and caching
- 8x more performant than hand-rolled APIs