mirror of
https://github.com/ash-project/ash_graphql.git
synced 2024-09-20 13:24:14 +12:00
453 lines
20 KiB
Markdown
453 lines
20 KiB
Markdown
<!--
|
|
This file was generated by Spark. Do not edit it by hand.
|
|
-->
|
|
# DSL: AshGraphql.Domain
|
|
|
|
The entrypoint for adding GraphQL behavior to an Ash domain
|
|
|
|
|
|
## graphql
|
|
Domain level configuration for GraphQL
|
|
|
|
|
|
### Nested DSLs
|
|
* [queries](#graphql-queries)
|
|
* get
|
|
* read_one
|
|
* list
|
|
* action
|
|
* [mutations](#graphql-mutations)
|
|
* create
|
|
* update
|
|
* destroy
|
|
* action
|
|
|
|
|
|
### Examples
|
|
```
|
|
graphql do
|
|
authorize? false # To skip authorization for this domain
|
|
end
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
### Options
|
|
|
|
| Name | Type | Default | Docs |
|
|
|------|------|---------|------|
|
|
| [`authorize?`](#graphql-authorize?){: #graphql-authorize? } | `boolean` | `true` | Whether or not to perform authorization for this domain |
|
|
| [`tracer`](#graphql-tracer){: #graphql-tracer } | `atom` | | A tracer to use to trace execution in the graphql. Will use `config :ash, :tracer` if it is set. |
|
|
| [`root_level_errors?`](#graphql-root_level_errors?){: #graphql-root_level_errors? } | `boolean` | `false` | By default, mutation errors are shown in their result object's errors key, but this setting places those errors in the top level errors list |
|
|
| [`error_handler`](#graphql-error_handler){: #graphql-error_handler } | `mfa` | `{AshGraphql.DefaultErrorHandler, :handle_error, []}` | Set an MFA to intercept/handle any errors that are generated. |
|
|
| [`show_raised_errors?`](#graphql-show_raised_errors?){: #graphql-show_raised_errors? } | `boolean` | `false` | For security purposes, if an error is *raised* then Ash simply shows a generic error. If you want to show those errors, set this to true. |
|
|
|
|
|
|
## graphql.queries
|
|
Queries to expose for the resource.
|
|
|
|
|
|
### Nested DSLs
|
|
* [get](#graphql-queries-get)
|
|
* [read_one](#graphql-queries-read_one)
|
|
* [list](#graphql-queries-list)
|
|
* [action](#graphql-queries-action)
|
|
|
|
|
|
### Examples
|
|
```
|
|
queries do
|
|
get Post, :get_post, :read
|
|
read_one User, :current_user, :current_user
|
|
list Post, :list_posts, :read
|
|
end
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
## graphql.queries.get
|
|
```elixir
|
|
get resource, name, action
|
|
```
|
|
|
|
|
|
A query to fetch a record by primary key
|
|
|
|
|
|
|
|
### Examples
|
|
```
|
|
get :get_post, :read
|
|
```
|
|
|
|
|
|
|
|
### Arguments
|
|
|
|
| Name | Type | Default | Docs |
|
|
|------|------|---------|------|
|
|
| [`resource`](#graphql-queries-get-resource){: #graphql-queries-get-resource } | `module` | | The resource that the action is defined on |
|
|
| [`name`](#graphql-queries-get-name){: #graphql-queries-get-name } | `atom` | `:get` | The name to use for the query. |
|
|
| [`action`](#graphql-queries-get-action){: #graphql-queries-get-action .spark-required} | `atom` | | The action to use for the query. |
|
|
### Options
|
|
|
|
| Name | Type | Default | Docs |
|
|
|------|------|---------|------|
|
|
| [`identity`](#graphql-queries-get-identity){: #graphql-queries-get-identity } | `atom` | | The identity to use for looking up the record. Pass `false` to not use an identity. |
|
|
| [`allow_nil?`](#graphql-queries-get-allow_nil?){: #graphql-queries-get-allow_nil? } | `boolean` | `true` | Whether or not the action can return nil. |
|
|
| [`modify_resolution`](#graphql-queries-get-modify_resolution){: #graphql-queries-get-modify_resolution } | `mfa` | | An MFA that will be called with the resolution, the query, and the result of the action as the first three arguments. See the [the guide](/documentation/topics/modifying-the-resolution.html) for more. |
|
|
| [`type_name`](#graphql-queries-get-type_name){: #graphql-queries-get-type_name } | `atom` | | Override the type name returned by this query. Must be set if the read action has `metadata` that is not hidden via the `show_metadata` key. |
|
|
| [`description`](#graphql-queries-get-description){: #graphql-queries-get-description } | `String.t` | | The query description that gets shown in the Graphql schema. If not provided, the action description will be used. |
|
|
| [`metadata_names`](#graphql-queries-get-metadata_names){: #graphql-queries-get-metadata_names } | `keyword` | `[]` | Name overrides for metadata fields on the read action. |
|
|
| [`metadata_types`](#graphql-queries-get-metadata_types){: #graphql-queries-get-metadata_types } | `keyword` | `[]` | Type overrides for metadata fields on the read action. |
|
|
| [`show_metadata`](#graphql-queries-get-show_metadata){: #graphql-queries-get-show_metadata } | `list(atom)` | | The metadata attributes to show. Defaults to all. |
|
|
| [`as_mutation?`](#graphql-queries-get-as_mutation?){: #graphql-queries-get-as_mutation? } | `boolean` | `false` | Places the query in the `mutations` key instead. Not typically necessary, but is often paired with `as_mutation?`. See the [the guide](/documentation/topics/modifying-the-resolution.html) for more. |
|
|
| [`relay_id_translations`](#graphql-queries-get-relay_id_translations){: #graphql-queries-get-relay_id_translations } | `keyword` | `[]` | A keyword list indicating arguments or attributes that have to be translated from global Relay IDs to internal IDs. See the [Relay guide](/documentation/topics/relay.md#translating-relay-global-ids-passed-as-arguments) for more. |
|
|
| [`hide_inputs`](#graphql-queries-get-hide_inputs){: #graphql-queries-get-hide_inputs } | `list(atom)` | `[]` | A list of inputs to hide from the mutation. |
|
|
|
|
|
|
|
|
|
|
|
|
### Introspection
|
|
|
|
Target: `AshGraphql.Resource.Query`
|
|
|
|
## graphql.queries.read_one
|
|
```elixir
|
|
read_one resource, name, action
|
|
```
|
|
|
|
|
|
A query to fetch a record
|
|
|
|
|
|
|
|
### Examples
|
|
```
|
|
read_one :current_user, :current_user
|
|
```
|
|
|
|
|
|
|
|
### Arguments
|
|
|
|
| Name | Type | Default | Docs |
|
|
|------|------|---------|------|
|
|
| [`resource`](#graphql-queries-read_one-resource){: #graphql-queries-read_one-resource } | `module` | | The resource that the action is defined on |
|
|
| [`name`](#graphql-queries-read_one-name){: #graphql-queries-read_one-name } | `atom` | `:get` | The name to use for the query. |
|
|
| [`action`](#graphql-queries-read_one-action){: #graphql-queries-read_one-action .spark-required} | `atom` | | The action to use for the query. |
|
|
### Options
|
|
|
|
| Name | Type | Default | Docs |
|
|
|------|------|---------|------|
|
|
| [`allow_nil?`](#graphql-queries-read_one-allow_nil?){: #graphql-queries-read_one-allow_nil? } | `boolean` | `true` | Whether or not the action can return nil. |
|
|
| [`type_name`](#graphql-queries-read_one-type_name){: #graphql-queries-read_one-type_name } | `atom` | | Override the type name returned by this query. Must be set if the read action has `metadata` that is not hidden via the `show_metadata` key. |
|
|
| [`description`](#graphql-queries-read_one-description){: #graphql-queries-read_one-description } | `String.t` | | The query description that gets shown in the Graphql schema. If not provided, the action description will be used. |
|
|
| [`metadata_names`](#graphql-queries-read_one-metadata_names){: #graphql-queries-read_one-metadata_names } | `keyword` | `[]` | Name overrides for metadata fields on the read action. |
|
|
| [`metadata_types`](#graphql-queries-read_one-metadata_types){: #graphql-queries-read_one-metadata_types } | `keyword` | `[]` | Type overrides for metadata fields on the read action. |
|
|
| [`show_metadata`](#graphql-queries-read_one-show_metadata){: #graphql-queries-read_one-show_metadata } | `list(atom)` | | The metadata attributes to show. Defaults to all. |
|
|
| [`as_mutation?`](#graphql-queries-read_one-as_mutation?){: #graphql-queries-read_one-as_mutation? } | `boolean` | `false` | Places the query in the `mutations` key instead. Not typically necessary, but is often paired with `as_mutation?`. See the [the guide](/documentation/topics/modifying-the-resolution.html) for more. |
|
|
| [`relay_id_translations`](#graphql-queries-read_one-relay_id_translations){: #graphql-queries-read_one-relay_id_translations } | `keyword` | `[]` | A keyword list indicating arguments or attributes that have to be translated from global Relay IDs to internal IDs. See the [Relay guide](/documentation/topics/relay.md#translating-relay-global-ids-passed-as-arguments) for more. |
|
|
| [`hide_inputs`](#graphql-queries-read_one-hide_inputs){: #graphql-queries-read_one-hide_inputs } | `list(atom)` | `[]` | A list of inputs to hide from the mutation. |
|
|
|
|
|
|
|
|
|
|
|
|
### Introspection
|
|
|
|
Target: `AshGraphql.Resource.Query`
|
|
|
|
## graphql.queries.list
|
|
```elixir
|
|
list resource, name, action
|
|
```
|
|
|
|
|
|
A query to fetch a list of records
|
|
|
|
|
|
|
|
### Examples
|
|
```
|
|
list :list_posts, :read
|
|
```
|
|
|
|
```
|
|
list :list_posts_paginated, :read, relay?: true
|
|
```
|
|
|
|
|
|
|
|
### Arguments
|
|
|
|
| Name | Type | Default | Docs |
|
|
|------|------|---------|------|
|
|
| [`resource`](#graphql-queries-list-resource){: #graphql-queries-list-resource } | `module` | | The resource that the action is defined on |
|
|
| [`name`](#graphql-queries-list-name){: #graphql-queries-list-name } | `atom` | `:get` | The name to use for the query. |
|
|
| [`action`](#graphql-queries-list-action){: #graphql-queries-list-action .spark-required} | `atom` | | The action to use for the query. |
|
|
### Options
|
|
|
|
| Name | Type | Default | Docs |
|
|
|------|------|---------|------|
|
|
| [`relay?`](#graphql-queries-list-relay?){: #graphql-queries-list-relay? } | `boolean` | `false` | If true, the graphql queries/resolvers for this resource will be built to honor the relay specification. See [the relay guide](/documentation/topics/relay.html) for more. |
|
|
| [`paginate_with`](#graphql-queries-list-paginate_with){: #graphql-queries-list-paginate_with } | `:keyset \| :offset \| nil` | `:keyset` | Determine the pagination strategy to use, if multiple are available. If `nil`, no pagination is applied, otherwise the given strategy is used. |
|
|
| [`type_name`](#graphql-queries-list-type_name){: #graphql-queries-list-type_name } | `atom` | | Override the type name returned by this query. Must be set if the read action has `metadata` that is not hidden via the `show_metadata` key. |
|
|
| [`description`](#graphql-queries-list-description){: #graphql-queries-list-description } | `String.t` | | The query description that gets shown in the Graphql schema. If not provided, the action description will be used. |
|
|
| [`metadata_names`](#graphql-queries-list-metadata_names){: #graphql-queries-list-metadata_names } | `keyword` | `[]` | Name overrides for metadata fields on the read action. |
|
|
| [`metadata_types`](#graphql-queries-list-metadata_types){: #graphql-queries-list-metadata_types } | `keyword` | `[]` | Type overrides for metadata fields on the read action. |
|
|
| [`show_metadata`](#graphql-queries-list-show_metadata){: #graphql-queries-list-show_metadata } | `list(atom)` | | The metadata attributes to show. Defaults to all. |
|
|
| [`as_mutation?`](#graphql-queries-list-as_mutation?){: #graphql-queries-list-as_mutation? } | `boolean` | `false` | Places the query in the `mutations` key instead. Not typically necessary, but is often paired with `as_mutation?`. See the [the guide](/documentation/topics/modifying-the-resolution.html) for more. |
|
|
| [`relay_id_translations`](#graphql-queries-list-relay_id_translations){: #graphql-queries-list-relay_id_translations } | `keyword` | `[]` | A keyword list indicating arguments or attributes that have to be translated from global Relay IDs to internal IDs. See the [Relay guide](/documentation/topics/relay.md#translating-relay-global-ids-passed-as-arguments) for more. |
|
|
| [`hide_inputs`](#graphql-queries-list-hide_inputs){: #graphql-queries-list-hide_inputs } | `list(atom)` | `[]` | A list of inputs to hide from the mutation. |
|
|
|
|
|
|
|
|
|
|
|
|
### Introspection
|
|
|
|
Target: `AshGraphql.Resource.Query`
|
|
|
|
## graphql.queries.action
|
|
```elixir
|
|
action resource, name, action
|
|
```
|
|
|
|
|
|
Runs a generic action
|
|
|
|
|
|
|
|
### Examples
|
|
```
|
|
action :check_status, :check_status
|
|
```
|
|
|
|
|
|
|
|
### Arguments
|
|
|
|
| Name | Type | Default | Docs |
|
|
|------|------|---------|------|
|
|
| [`resource`](#graphql-queries-action-resource){: #graphql-queries-action-resource } | `module` | | The resource that the action is defined on |
|
|
| [`name`](#graphql-queries-action-name){: #graphql-queries-action-name } | `atom` | `:get` | The name to use for the query. |
|
|
| [`action`](#graphql-queries-action-action){: #graphql-queries-action-action .spark-required} | `atom` | | The action to use for the query. |
|
|
### Options
|
|
|
|
| Name | Type | Default | Docs |
|
|
|------|------|---------|------|
|
|
| [`description`](#graphql-queries-action-description){: #graphql-queries-action-description } | `String.t` | | The description that gets shown in the Graphql schema. If not provided, the action description will be used. |
|
|
| [`hide_inputs`](#graphql-queries-action-hide_inputs){: #graphql-queries-action-hide_inputs } | `list(atom)` | `[]` | Inputs to hide in the mutation/query |
|
|
| [`relay_id_translations`](#graphql-queries-action-relay_id_translations){: #graphql-queries-action-relay_id_translations } | `keyword` | `[]` | A keyword list indicating arguments or attributes that have to be translated from global Relay IDs to internal IDs. See the [Relay guide](/documentation/topics/relay.md#translating-relay-global-ids-passed-as-arguments) for more. |
|
|
|
|
|
|
|
|
|
|
|
|
### Introspection
|
|
|
|
Target: `AshGraphql.Resource.Action`
|
|
|
|
|
|
## graphql.mutations
|
|
Mutations (create/update/destroy actions) to expose for the resource.
|
|
|
|
|
|
### Nested DSLs
|
|
* [create](#graphql-mutations-create)
|
|
* [update](#graphql-mutations-update)
|
|
* [destroy](#graphql-mutations-destroy)
|
|
* [action](#graphql-mutations-action)
|
|
|
|
|
|
### Examples
|
|
```
|
|
mutations do
|
|
create :create_post, :create
|
|
update :update_post, :update
|
|
destroy :destroy_post, :destroy
|
|
end
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
## graphql.mutations.create
|
|
```elixir
|
|
create resource, name, action
|
|
```
|
|
|
|
|
|
A mutation to create a record
|
|
|
|
|
|
|
|
### Examples
|
|
```
|
|
create :create_post, :create
|
|
```
|
|
|
|
|
|
|
|
### Arguments
|
|
|
|
| Name | Type | Default | Docs |
|
|
|------|------|---------|------|
|
|
| [`resource`](#graphql-mutations-create-resource){: #graphql-mutations-create-resource } | `module` | | The resource that the action is defined on |
|
|
| [`name`](#graphql-mutations-create-name){: #graphql-mutations-create-name } | `atom` | `:get` | The name to use for the mutation. |
|
|
| [`action`](#graphql-mutations-create-action){: #graphql-mutations-create-action .spark-required} | `atom` | | The action to use for the mutation. |
|
|
### Options
|
|
|
|
| Name | Type | Default | Docs |
|
|
|------|------|---------|------|
|
|
| [`description`](#graphql-mutations-create-description){: #graphql-mutations-create-description } | `String.t` | | The mutation description that gets shown in the Graphql schema. If not provided, the action description will be used. |
|
|
| [`upsert?`](#graphql-mutations-create-upsert?){: #graphql-mutations-create-upsert? } | `boolean` | `false` | Whether or not to use the `upsert?: true` option when calling `YourDomain.create/2`. |
|
|
| [`upsert_identity`](#graphql-mutations-create-upsert_identity){: #graphql-mutations-create-upsert_identity } | `atom` | `false` | Which identity to use for the upsert |
|
|
| [`modify_resolution`](#graphql-mutations-create-modify_resolution){: #graphql-mutations-create-modify_resolution } | `mfa` | | An MFA that will be called with the resolution, the query, and the result of the action as the first three arguments. See the [the guide](/documentation/topics/modifying-the-resolution.html) for more. |
|
|
| [`hide_inputs`](#graphql-mutations-create-hide_inputs){: #graphql-mutations-create-hide_inputs } | `list(atom)` | `[]` | A list of inputs to hide from the mutation. |
|
|
| [`relay_id_translations`](#graphql-mutations-create-relay_id_translations){: #graphql-mutations-create-relay_id_translations } | `keyword` | `[]` | A keyword list indicating arguments or attributes that have to be translated from global Relay IDs to internal IDs. See the [Relay guide](/documentation/topics/relay.md#translating-relay-global-ids-passed-as-arguments) for more. |
|
|
|
|
|
|
|
|
|
|
|
|
### Introspection
|
|
|
|
Target: `AshGraphql.Resource.Mutation`
|
|
|
|
## graphql.mutations.update
|
|
```elixir
|
|
update resource, name, action
|
|
```
|
|
|
|
|
|
A mutation to update a record
|
|
|
|
|
|
|
|
### Examples
|
|
```
|
|
update :update_post, :update
|
|
```
|
|
|
|
|
|
|
|
### Arguments
|
|
|
|
| Name | Type | Default | Docs |
|
|
|------|------|---------|------|
|
|
| [`resource`](#graphql-mutations-update-resource){: #graphql-mutations-update-resource } | `module` | | The resource that the action is defined on |
|
|
| [`name`](#graphql-mutations-update-name){: #graphql-mutations-update-name } | `atom` | `:get` | The name to use for the mutation. |
|
|
| [`action`](#graphql-mutations-update-action){: #graphql-mutations-update-action .spark-required} | `atom` | | The action to use for the mutation. |
|
|
### Options
|
|
|
|
| Name | Type | Default | Docs |
|
|
|------|------|---------|------|
|
|
| [`identity`](#graphql-mutations-update-identity){: #graphql-mutations-update-identity } | `atom` | | The identity to use to fetch the record to be updated. Use `false` if no identity is required. |
|
|
| [`read_action`](#graphql-mutations-update-read_action){: #graphql-mutations-update-read_action } | `atom` | | The read action to use to fetch the record to be updated. Defaults to the primary read action. |
|
|
| [`hide_inputs`](#graphql-mutations-update-hide_inputs){: #graphql-mutations-update-hide_inputs } | `list(atom)` | | A list of inputs to hide from the mutation. |
|
|
| [`relay_id_translations`](#graphql-mutations-update-relay_id_translations){: #graphql-mutations-update-relay_id_translations } | `keyword` | `[]` | A keyword list indicating arguments or attributes that have to be translated from global Relay IDs to internal IDs. See the [Relay guide](/documentation/topics/relay.md#translating-relay-global-ids-passed-as-arguments) for more. |
|
|
|
|
|
|
|
|
|
|
|
|
### Introspection
|
|
|
|
Target: `AshGraphql.Resource.Mutation`
|
|
|
|
## graphql.mutations.destroy
|
|
```elixir
|
|
destroy resource, name, action
|
|
```
|
|
|
|
|
|
A mutation to destroy a record
|
|
|
|
|
|
|
|
### Examples
|
|
```
|
|
destroy :destroy_post, :destroy
|
|
```
|
|
|
|
|
|
|
|
### Arguments
|
|
|
|
| Name | Type | Default | Docs |
|
|
|------|------|---------|------|
|
|
| [`resource`](#graphql-mutations-destroy-resource){: #graphql-mutations-destroy-resource } | `module` | | The resource that the action is defined on |
|
|
| [`name`](#graphql-mutations-destroy-name){: #graphql-mutations-destroy-name } | `atom` | `:get` | The name to use for the mutation. |
|
|
| [`action`](#graphql-mutations-destroy-action){: #graphql-mutations-destroy-action .spark-required} | `atom` | | The action to use for the mutation. |
|
|
### Options
|
|
|
|
| Name | Type | Default | Docs |
|
|
|------|------|---------|------|
|
|
| [`read_action`](#graphql-mutations-destroy-read_action){: #graphql-mutations-destroy-read_action } | `atom` | | The read action to use to fetch the record to be destroyed. Defaults to the primary read action. |
|
|
| [`identity`](#graphql-mutations-destroy-identity){: #graphql-mutations-destroy-identity } | `atom` | | The identity to use to fetch the record to be destroyed. Use `false` if no identity is required. |
|
|
| [`hide_inputs`](#graphql-mutations-destroy-hide_inputs){: #graphql-mutations-destroy-hide_inputs } | `list(atom)` | | A list of inputs to hide from the mutation. |
|
|
| [`relay_id_translations`](#graphql-mutations-destroy-relay_id_translations){: #graphql-mutations-destroy-relay_id_translations } | `keyword` | `[]` | A keyword list indicating arguments or attributes that have to be translated from global Relay IDs to internal IDs. See the [Relay guide](/documentation/topics/relay.md#translating-relay-global-ids-passed-as-arguments) for more. |
|
|
|
|
|
|
|
|
|
|
|
|
### Introspection
|
|
|
|
Target: `AshGraphql.Resource.Mutation`
|
|
|
|
## graphql.mutations.action
|
|
```elixir
|
|
action resource, name, action
|
|
```
|
|
|
|
|
|
Runs a generic action
|
|
|
|
|
|
|
|
### Examples
|
|
```
|
|
action :check_status, :check_status
|
|
```
|
|
|
|
|
|
|
|
### Arguments
|
|
|
|
| Name | Type | Default | Docs |
|
|
|------|------|---------|------|
|
|
| [`resource`](#graphql-mutations-action-resource){: #graphql-mutations-action-resource } | `module` | | The resource that the action is defined on |
|
|
| [`name`](#graphql-mutations-action-name){: #graphql-mutations-action-name } | `atom` | `:get` | The name to use for the query. |
|
|
| [`action`](#graphql-mutations-action-action){: #graphql-mutations-action-action .spark-required} | `atom` | | The action to use for the query. |
|
|
### Options
|
|
|
|
| Name | Type | Default | Docs |
|
|
|------|------|---------|------|
|
|
| [`description`](#graphql-mutations-action-description){: #graphql-mutations-action-description } | `String.t` | | The description that gets shown in the Graphql schema. If not provided, the action description will be used. |
|
|
| [`hide_inputs`](#graphql-mutations-action-hide_inputs){: #graphql-mutations-action-hide_inputs } | `list(atom)` | `[]` | Inputs to hide in the mutation/query |
|
|
| [`relay_id_translations`](#graphql-mutations-action-relay_id_translations){: #graphql-mutations-action-relay_id_translations } | `keyword` | `[]` | A keyword list indicating arguments or attributes that have to be translated from global Relay IDs to internal IDs. See the [Relay guide](/documentation/topics/relay.md#translating-relay-global-ids-passed-as-arguments) for more. |
|
|
|
|
|
|
|
|
|
|
|
|
### Introspection
|
|
|
|
Target: `AshGraphql.Resource.Action`
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<style type="text/css">.spark-required::after { content: "*"; color: red !important; }</style>
|