ash_graphql/documentation/dsls/DSL:-AshGraphql.Domain.md
2024-05-24 15:51:19 -04:00

20 KiB

DSL: AshGraphql.Domain

The entrypoint for adding GraphQL behavior to an Ash domain

graphql

Domain level configuration for GraphQL

Nested DSLs

Examples

graphql do
  authorize? false # To skip authorization for this domain
end

Options

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.

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{: #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.

Options

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.

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{: #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.

Options

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.

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{: #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.

Options

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.

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{: #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.

Options

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.

Introspection

Target: AshGraphql.Resource.Action

graphql.mutations

Mutations (create/update/destroy actions) to expose for the resource.

Nested DSLs

Examples

mutations do
  create :create_post, :create
  update :update_post, :update
  destroy :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{: #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.

Options

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.

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{: #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.

Options

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.

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{: #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.

Options

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.

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{: #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.

Options

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.

Introspection

Target: AshGraphql.Resource.Action