mirror of
https://github.com/ash-project/ash_graphql.git
synced 2024-09-21 05:43:28 +12:00
20 KiB
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