Interagindo com a API GraphQLExecutando mutations em massa
Executando mutations em massa
O Gato GraphQL fornece campos de mutation "bulk" para todas as mutations do schema, permitindo que a gente mute múltiplos recursos.
Por exemplo, a mutation createPosts (a mutation para um único recurso é createPost) criará múltiplos posts:
mutation CreatePosts {
createPosts(inputs: [
{
title: "First post"
contentAs: {
html: "This is the content for the first post"
}
},
{
title: "Second post"
contentAs: {
html: "Here is another content, for another post"
}
excerpt: "The cup is within reach"
},
{
title: "Third post"
contentAs: {
html: "This is yet another piece of content"
},
authorBy: {
id: 1
},
status: draft
}
]) {
status
errors {
__typename
...on ErrorPayload {
message
}
}
post {
id
title
content
excerpt
author {
name
}
status
}
}
}Argumentos
Todas as mutations em massa aceitam dois argumentos:
inputs(obrigatório): O array de itens de entrada, onde cada item contém os dados para mutar um recursostopExecutingMutationItemsOnFirstError(padrãofalse): Indica se, caso algum dos inputs produza um erro, a execução da mutation nos inputs seguintes deve ser interrompida.
Todas as mutations são executadas na mesma ordem fornecida no argumento inputs.
Casos de uso
As mutations em massa abrem possibilidades para gerenciar nosso site WordPress.
Por exemplo, a seguinte query GraphQL usa createPosts para duplicar posts:
query ExportPostData
{
postsToDuplicate: posts {
rawTitle
rawContent
rawExcerpt
postInput: _echo(value: {
title: $__rawTitle
contentAs: {
html: $__rawContent
},
excerpt: $__rawExcerpt
})
@export(as: "postInputs", type: LIST)
@remove
}
}
mutation CreatePosts
@depends(on: "ExportPostData")
{
createPosts(inputs: $postInputs) {
status
errors {
__typename
...on ErrorPayload {
message
}
}
post {
id
title
content
excerpt
}
}
}