View Source AshGraphql (ash_graphql v1.4.0)
AshGraphql is a GraphQL extension for the Ash framework.
For more information, see the getting started guide
Summary
Functions
Applies AshGraphql's error handling logic if the value is an {:error, error}
tuple, otherwise returns the value
Use this to load any requested fields for a result when it is returned from a custom resolver or mutation.
The same as load_fields/4
, but modifies the provided query to load the required fields.
Functions
@spec handle_errors( result :: term(), resource :: Ash.Resource.t(), resolution :: Absinthe.Resolution.t(), opts :: Keyword.t() ) :: term()
Applies AshGraphql's error handling logic if the value is an {:error, error}
tuple, otherwise returns the value
Useful for automatically handling errors in custom queries
Options
domain
: The domain to use when loading the fields. Determined from the resource by default.
@spec load_fields( input, Ash.Resource.t(), Absinthe.Resolution.t(), opts :: Keyword.t() ) :: {:ok, input} | {:error, term()} when input: Ash.Resource.record() | [Ash.Resource.record()] | Ash.Page.page()
Use this to load any requested fields for a result when it is returned from a custom resolver or mutation.
Determining required fields
If you have a custom query/mutation that returns the record at a "path" in
the response, then specify the path. In the example below, path
would be
["record"]
. This is how we know what fields to load.
query something() {
result {
record { # <- this is the instance
id
name
}
}
}
Options
path
: The path to the record(s) in the responsedomain
: The domain to use when loading the fields. Determined from the resource by default.authorize?
: Whether to authorize access to fields. Defaults to the domain's setting (which defaults totrue
).actor
: The actor to use when authorizing access to fields. Defaults to the actor in the resolution context.tenant
: The tenant to use when authorizing access to fields. Defaults to the tenant in the resolution context.
@spec load_fields_on_query( query :: Ash.Query.t() | Ash.Resource.t(), Absinthe.Resolution.t(), Keyword.t() ) :: Ash.Query.t()
The same as load_fields/4
, but modifies the provided query to load the required fields.
This allows doing the loading in a single query rather than two separate queries.