The entrypoint for adding GraphQL behavior to an Ash domain
Domain level configuration for GraphQL
graphql do
authorize? false # To skip authorization for this domain
end
| Name | Type | Default | Docs |
|---|---|---|---|
authorize?{: #graphql-authorize? } |
boolean |
true |
Whether or not to perform authorization for this domain |
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? } |
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 } |
mfa |
{AshGraphql.DefaultErrorHandler, :handle_error, []} |
Set an MFA to intercept/handle any errors that are generated. |
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. |
Queries to expose for the resource.
queries do
get Post, :get_post, :read
read_one User, :current_user, :current_user
list Post, :list_posts, :read
end
get resource, name, actionA query to fetch a record by primary key
get :get_post, :read
| Name | Type | Default | Docs |
|---|---|---|---|
resource{: #graphql-queries-get-resource } |
module |
The resource that the action is defined on | |
name{: #graphql-queries-get-name } |
atom |
:get |
The name to use for the query. |
action{: #graphql-queries-get-action .spark-required} |
atom |
The action to use for the query. |
| Name | Type | Default | Docs |
|---|---|---|---|
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? } |
boolean |
true |
Whether or not the action can return nil. |
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 for more. | |
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 } |
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 } |
keyword |
[] |
Name overrides for metadata fields on the read action. |
metadata_types{: #graphql-queries-get-metadata_types } |
keyword |
[] |
Type overrides for metadata fields on the read action. |
show_metadata{: #graphql-queries-get-show_metadata } |
list(atom) |
The metadata attributes to show. Defaults to all. | |
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 for more. |
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 for more. |
hide_inputs{: #graphql-queries-get-hide_inputs } |
list(atom) |
[] |
A list of inputs to hide from the mutation. |
Target: AshGraphql.Resource.Query
read_one resource, name, actionA query to fetch a record
read_one :current_user, :current_user
| Name | Type | Default | Docs |
|---|---|---|---|
resource{: #graphql-queries-read_one-resource } |
module |
The resource that the action is defined on | |
name{: #graphql-queries-read_one-name } |
atom |
:get |
The name to use for the query. |
action{: #graphql-queries-read_one-action .spark-required} |
atom |
The action to use for the query. |
| Name | Type | Default | Docs |
|---|---|---|---|
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 } |
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 } |
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 } |
keyword |
[] |
Name overrides for metadata fields on the read action. |
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 } |
list(atom) |
The metadata attributes to show. Defaults to all. | |
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 for more. |
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 for more. |
hide_inputs{: #graphql-queries-read_one-hide_inputs } |
list(atom) |
[] |
A list of inputs to hide from the mutation. |
Target: AshGraphql.Resource.Query
list resource, name, actionA query to fetch a list of records
list :list_posts, :read
list :list_posts_paginated, :read, relay?: true
| Name | Type | Default | Docs |
|---|---|---|---|
resource{: #graphql-queries-list-resource } |
module |
The resource that the action is defined on | |
name{: #graphql-queries-list-name } |
atom |
:get |
The name to use for the query. |
action{: #graphql-queries-list-action .spark-required} |
atom |
The action to use for the query. |
| Name | Type | Default | Docs |
|---|---|---|---|
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 for more. |
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 } |
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 } |
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 } |
keyword |
[] |
Name overrides for metadata fields on the read action. |
metadata_types{: #graphql-queries-list-metadata_types } |
keyword |
[] |
Type overrides for metadata fields on the read action. |
show_metadata{: #graphql-queries-list-show_metadata } |
list(atom) |
The metadata attributes to show. Defaults to all. | |
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 for more. |
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 for more. |
hide_inputs{: #graphql-queries-list-hide_inputs } |
list(atom) |
[] |
A list of inputs to hide from the mutation. |
Target: AshGraphql.Resource.Query
action resource, name, actionRuns a generic action
action :check_status, :check_status
| Name | Type | Default | Docs |
|---|---|---|---|
resource{: #graphql-queries-action-resource } |
module |
The resource that the action is defined on | |
name{: #graphql-queries-action-name } |
atom |
:get |
The name to use for the query. |
action{: #graphql-queries-action-action .spark-required} |
atom |
The action to use for the query. |
| Name | Type | Default | Docs |
|---|---|---|---|
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 } |
list(atom) |
[] |
Inputs to hide in the mutation/query |
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 for more. |
Target: AshGraphql.Resource.Action
Mutations (create/update/destroy actions) to expose for the resource.
mutations do
create :create_post, :create
update :update_post, :update
destroy :destroy_post, :destroy
end
create resource, name, actionA mutation to create a record
create :create_post, :create
| Name | Type | Default | Docs |
|---|---|---|---|
resource{: #graphql-mutations-create-resource } |
module |
The resource that the action is defined on | |
name{: #graphql-mutations-create-name } |
atom |
:get |
The name to use for the mutation. |
action{: #graphql-mutations-create-action .spark-required} |
atom |
The action to use for the mutation. |
| Name | Type | Default | Docs |
|---|---|---|---|
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? } |
boolean |
false |
Whether or not to use the upsert?: true option when calling YourDomain.create/2. |
upsert_identity{: #graphql-mutations-create-upsert_identity } |
atom |
false |
Which identity to use for the upsert |
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 for more. | |
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 } |
keyword |
[] |
A keyword list indicating arguments or attributes that have to be translated from global Relay IDs to internal IDs. See the Relay guide for more. |
Target: AshGraphql.Resource.Mutation
update resource, name, actionA mutation to update a record
update :update_post, :update
| Name | Type | Default | Docs |
|---|---|---|---|
resource{: #graphql-mutations-update-resource } |
module |
The resource that the action is defined on | |
name{: #graphql-mutations-update-name } |
atom |
:get |
The name to use for the mutation. |
action{: #graphql-mutations-update-action .spark-required} |
atom |
The action to use for the mutation. |
| Name | Type | Default | Docs |
|---|---|---|---|
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 } |
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 } |
list(atom) |
A list of inputs to hide from the mutation. | |
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 for more. |
Target: AshGraphql.Resource.Mutation
destroy resource, name, actionA mutation to destroy a record
destroy :destroy_post, :destroy
| Name | Type | Default | Docs |
|---|---|---|---|
resource{: #graphql-mutations-destroy-resource } |
module |
The resource that the action is defined on | |
name{: #graphql-mutations-destroy-name } |
atom |
:get |
The name to use for the mutation. |
action{: #graphql-mutations-destroy-action .spark-required} |
atom |
The action to use for the mutation. |
| Name | Type | Default | Docs |
|---|---|---|---|
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 } |
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 } |
list(atom) |
A list of inputs to hide from the mutation. | |
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 for more. |
Target: AshGraphql.Resource.Mutation
action resource, name, actionRuns a generic action
action :check_status, :check_status
| Name | Type | Default | Docs |
|---|---|---|---|
resource{: #graphql-mutations-action-resource } |
module |
The resource that the action is defined on | |
name{: #graphql-mutations-action-name } |
atom |
:get |
The name to use for the query. |
action{: #graphql-mutations-action-action .spark-required} |
atom |
The action to use for the query. |
| Name | Type | Default | Docs |
|---|---|---|---|
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 } |
list(atom) |
[] |
Inputs to hide in the mutation/query |
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 for more. |
Target: AshGraphql.Resource.Action