title: Can an Apollo Mutation return a custom result object?
body: <p>The result returned from an Apollo mutation is typically a type or a subset of fields from a type, and this is usually great. So my mutation:</p>
  
  <pre><code>const addUserMutation = gql`
    mutation createUser($email: String!, $permissions: [CreatePermissionInput]) {
      createUser(input: {email: $email, permissions: $permissions}) {
        id
        created
        lastUpdated
        uid
        email
        permissions {
          who
          ...
        }
      }
    }
  `
  </code></pre>
  
  <p>Which is calling:</p>
  
  <pre><code>extend type Mutation {
    createUser(input: CreateUserInput!): User
  }
  </code></pre>
  
  <p>Will return the user with the fields listed. </p>
  
  <p>Problem is, I want to know if the user that we just tried to create already existed or not. So how can I edit the response to include this flag? Can you have a mutation return, say, an object like:
  </p>
  
  <pre><code>{
    exists: true,
    user: { ... }
  }
  </code></pre>
  
  <p>So I can do this:
  </p>
  
  <pre><code>this.props.submit({
    variables: {
      email,
      permissions,
    },
  }).then(({ result }) =&gt; {
    console.log(result)
    // &gt; { exists: true, user: [USER OBJECT] }
  })
  </code></pre>
  
  <p>I get that this will break the auto cache update but sometimes you need the response from an update to tell you more.</p>