Commit 92fbe822 authored by Marcia Ramos's avatar Marcia Ramos

Merge branch 'ld-graphql-docs-ready' into 'master'

Docs: Add argument validation to GraphQL Styleguide

See merge request gitlab-org/gitlab!26239
parents cbfc556e 20bf7c6d
...@@ -636,6 +636,37 @@ found, we should raise a ...@@ -636,6 +636,37 @@ found, we should raise a
`Gitlab::Graphql::Errors::ResourceNotAvailable` error. Which will be `Gitlab::Graphql::Errors::ResourceNotAvailable` error. Which will be
correctly rendered to the clients. correctly rendered to the clients.
## Validating arguments
For validations of single arguments, use the
[`prepare` option](https://github.com/rmosolgo/graphql-ruby/blob/master/guides/fields/arguments.md)
as normal.
Sometimes a mutation or resolver may accept a number of optional
arguments, but still want to validate that at least one of the optional
arguments were given. In this situation, consider using the `#ready?`
method within your mutation or resolver to provide the validation. The
`#ready?` method will be called before any work is done within the
`#resolve` method.
Example:
```ruby
def ready?(**args)
if args.values_at(:body, :position).compact.blank?
raise Gitlab::Graphql::Errors::ArgumentError,
'body or position arguments are required'
end
# Always remember to call `#super`
super(args)
end
```
In the future this may be able to be done using `InputUnions` if
[this RFC](https://github.com/graphql/graphql-spec/blob/master/rfcs/InputUnion.md)
is merged.
## GitLab's custom scalars ## GitLab's custom scalars
### `Types::TimeType` ### `Types::TimeType`
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment