# @update

{% hint style="warning" %}
Required arguments for writing a mutation:

* id - Int! / \[Int!]! / String! / \[String!]! / ID! / \[ID!]!
* input - type Input or type Input (array)
  {% endhint %}

### For a separate add use

```javascript
/* ... */
const {
  UpdateDirective,
  UpdateTypeDefs
} = require('apollo-server-adonis-directives-pack/src/directives/mutation/Update')

makeExecutableSchema({ 
  /* ... */ 
  typeDefs: [ UpdateTypeDefs, /* ... */ ],
  schemaDirectives: { UpdateDirective, /* ... */} 
})
```

### Definition

{% code title="UpdateTypeDefs" %}

```graphql
directive @update(
  # By default, the model will be calculated from the name
  # of the returned "type" with the prefix 'App/Model/'
  model: String) on FIELD_DEFINITION
```

{% endcode %}

{% hint style="success" %}
:thinking: Carefully describe the mutation!

If you assign a different set to the input and output, this will throw an exception

> :exclamation: Error: Different sets are installed for input and output.
> {% endhint %}

{% hint style="info" %}
Update directive updates by primary key of model
{% endhint %}

### Example

```graphql
input UpdatePostInput {
    name: String
    text: String!
}

type Mutation {
    updatePost(id: String!, input: UpdatePostInput! ): Post @update
    updateManyPost(id: [String!]!, input: UpdatePostInput!): [Post] @update
}
```
