View Source DSL: AshGraphql.Domain
The entrypoint for adding GraphQL behavior to an Ash domain
graphql
Domain level configuration for GraphQL
Nested DSLs
- queries
- get
- read_one
- list
- action
- mutations
- create
- update
- destroy
- action
- subscriptions
- subscribe
Examples
graphql do
authorize? false # To skip authorization for this domain
end
Options
Name | Type | Default | Docs |
---|---|---|---|
authorize? | boolean | true | Whether or not to perform authorization for this domain |
tracer | atom | A tracer to use to trace execution in the graphql. Will use config :ash, :tracer if it is set. | |
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 | mfa | {AshGraphql.DefaultErrorHandler, :handle_error, []} | Set an MFA to intercept/handle any errors that are generated. |
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
Examples
queries do
get Post, :get_post, :read
read_one User, :current_user, :current_user
list Post, :list_posts, :read
end
graphql.queries.get
get resource, name, action
A query to fetch a record by primary key
Examples
get :get_post, :read
Arguments
Name | Type | Default | Docs |
---|---|---|---|
resource | module | The resource that the action is defined on | |
name | atom | :get | The name to use for the query. |
action | atom | The action to use for the query. |
Options
Name | Type | Default | Docs |
---|---|---|---|
identity | atom | The identity to use for looking up the record. Pass false to not use an identity. | |
allow_nil? | boolean | true | Whether or not the action can return nil. |
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 | 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 | String.t | The query description that gets shown in the Graphql schema. If not provided, the action description will be used. | |
metadata_names | keyword | [] | Name overrides for metadata fields on the read action. |
metadata_types | keyword | [] | Type overrides for metadata fields on the read action. |
show_metadata | list(atom) | The metadata attributes to show. Defaults to all. | |
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 | 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 | list(atom) | [] | A list of inputs to hide from the mutation. |
Introspection
Target: AshGraphql.Resource.Query
graphql.queries.read_one
read_one resource, name, action
A query to fetch a record
Examples
read_one :current_user, :current_user
Arguments
Name | Type | Default | Docs |
---|---|---|---|
resource | module | The resource that the action is defined on | |
name | atom | :get | The name to use for the query. |
action | atom | The action to use for the query. |
Options
Name | Type | Default | Docs |
---|---|---|---|
allow_nil? | boolean | true | Whether or not the action can return nil. |
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 | String.t | The query description that gets shown in the Graphql schema. If not provided, the action description will be used. | |
metadata_names | keyword | [] | Name overrides for metadata fields on the read action. |
metadata_types | keyword | [] | Type overrides for metadata fields on the read action. |
show_metadata | list(atom) | The metadata attributes to show. Defaults to all. | |
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 | 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 | list(atom) | [] | A list of inputs to hide from the mutation. |
Introspection
Target: AshGraphql.Resource.Query
graphql.queries.list
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 | module | The resource that the action is defined on | |
name | atom | :get | The name to use for the query. |
action | atom | The action to use for the query. |
Options
Name | Type | Default | Docs |
---|---|---|---|
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 | :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 | 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 | String.t | The query description that gets shown in the Graphql schema. If not provided, the action description will be used. | |
metadata_names | keyword | [] | Name overrides for metadata fields on the read action. |
metadata_types | keyword | [] | Type overrides for metadata fields on the read action. |
show_metadata | list(atom) | The metadata attributes to show. Defaults to all. | |
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 | 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 | list(atom) | [] | A list of inputs to hide from the mutation. |
Introspection
Target: AshGraphql.Resource.Query
graphql.queries.action
action resource, name, action
Runs a generic action
Examples
action :check_status, :check_status
Arguments
Name | Type | Default | Docs |
---|---|---|---|
resource | module | The resource that the action is defined on | |
name | atom | :get | The name to use for the query. |
action | atom | The action to use for the query. |
Options
Name | Type | Default | Docs |
---|---|---|---|
description | String.t | The description that gets shown in the Graphql schema. If not provided, the action description will be used. | |
hide_inputs | list(atom) | [] | Inputs to hide in the mutation/query |
error_location | :in_result | :top_level | :top_level | If the result should have an errors and a result key (like create/update/destroy mutations), or if errors should be shown in the top level errors key |
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. |
Introspection
Target: AshGraphql.Resource.Action
graphql.mutations
Mutations (create/update/destroy actions) to expose for the resource.
Nested DSLs
Examples
mutations do
create Post, :create_post, :create
update Post, :update_post, :update
destroy Post, :destroy_post, :destroy
end
graphql.mutations.create
create resource, name, action
A mutation to create a record
Examples
create :create_post, :create
Arguments
Name | Type | Default | Docs |
---|---|---|---|
resource | module | The resource that the action is defined on | |
name | atom | :get | The name to use for the mutation. |
action | atom | The action to use for the mutation. |
Options
Name | Type | Default | Docs |
---|---|---|---|
description | String.t | The mutation description that gets shown in the Graphql schema. If not provided, the action description will be used. | |
upsert? | boolean | false | Whether or not to use the upsert?: true option when calling YourDomain.create/2 . |
upsert_identity | atom | false | Which identity to use for the upsert |
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 | list(atom) | [] | A list of inputs to hide from the mutation. |
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. |
Introspection
Target: AshGraphql.Resource.Mutation
graphql.mutations.update
update resource, name, action
A mutation to update a record
Examples
update :update_post, :update
Arguments
Name | Type | Default | Docs |
---|---|---|---|
resource | module | The resource that the action is defined on | |
name | atom | :get | The name to use for the mutation. |
action | atom | The action to use for the mutation. |
Options
Name | Type | Default | Docs |
---|---|---|---|
description | String.t | The mutation description that gets shown in the Graphql schema. If not provided, the action description will be used. | |
identity | atom | The identity to use to fetch the record to be updated. Use false if no identity is required. | |
read_action | atom | The read action to use to fetch the record to be updated. Defaults to the primary read action. | |
hide_inputs | list(atom) | A list of inputs to hide from the mutation. | |
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. |
Introspection
Target: AshGraphql.Resource.Mutation
graphql.mutations.destroy
destroy resource, name, action
A mutation to destroy a record
Examples
destroy :destroy_post, :destroy
Arguments
Name | Type | Default | Docs |
---|---|---|---|
resource | module | The resource that the action is defined on | |
name | atom | :get | The name to use for the mutation. |
action | atom | The action to use for the mutation. |
Options
Name | Type | Default | Docs |
---|---|---|---|
description | String.t | The mutation description that gets shown in the Graphql schema. If not provided, the action description will be used. | |
read_action | atom | The read action to use to fetch the record to be destroyed. Defaults to the primary read action. | |
identity | atom | The identity to use to fetch the record to be destroyed. Use false if no identity is required. | |
hide_inputs | list(atom) | A list of inputs to hide from the mutation. | |
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. |
Introspection
Target: AshGraphql.Resource.Mutation
graphql.mutations.action
action resource, name, action
Runs a generic action
Examples
action :check_status, :check_status
Arguments
Name | Type | Default | Docs |
---|---|---|---|
resource | module | The resource that the action is defined on | |
name | atom | :get | The name to use for the query. |
action | atom | The action to use for the query. |
Options
Name | Type | Default | Docs |
---|---|---|---|
description | String.t | The description that gets shown in the Graphql schema. If not provided, the action description will be used. | |
hide_inputs | list(atom) | [] | Inputs to hide in the mutation/query |
error_location | :in_result | :top_level | :top_level | If the result should have an errors and a result key (like create/update/destroy mutations), or if errors should be shown in the top level errors key |
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. |
Introspection
Target: AshGraphql.Resource.Action
graphql.subscriptions
Subscriptions to expose for the resource.
Nested DSLs
Examples
subscription do
subscribe Post, :post_created do
action_types(:create)
end
end
graphql.subscriptions.subscribe
subscribe resource, name
A subscription to listen for changes on the resource
Examples
subscribe :post_created do
action_types(:create)
end
Arguments
Name | Type | Default | Docs |
---|---|---|---|
resource | module | The resource that the action is defined on | |
name | atom | The name to use for the subscription. |
Options
Name | Type | Default | Docs |
---|---|---|---|
actor | (any -> any) | module | The actor to use for authorization. | |
actions | list(atom) | atom | The create/update/destroy actions the subsciption should listen to. | |
action_types | list(atom) | atom | The type of actions the subsciption should listen to. | |
read_action | atom | The read action to use for reading data | |
hide_inputs | list(atom) | [] | A list of inputs to hide from the subscription, usable if the read action has arguments. |
Introspection
Target: AshGraphql.Resource.Subscription