Cqrs.Absinthe (cqrs_tools v0.3.5) View Source
Macros to derive queries and mutations from Queries and Commands, respectfully.
Configuration
:context_metadata_keys
- A list of the keys in theAbsinthe.Resolution
context
to pass to queries and mutations as metadata:type_mappings
- A list of mappings from ecto types to absinthe types.config :cqrs_tools, :absinthe, context_metadata_keys: [], type_mappings: [map: :json]
Example
defmodule ExampleApi.Types.UserTypes do
@moduledoc false
use Cqrs.Absinthe
use Absinthe.Schema.Notation
alias Example.Queries.{ListUsers, GetUser}
alias Example.Users.Protocol.{CreateUser, SuspendUser, ReinstateUser}
import ExampleApi.Resolvers.UserResolver
enum :user_status do
value :active
value :suspended
end
object :user do
field :id, :id
field :name, :string
field :email, :string
field :status, :user_status
end
object :user_queries do
derive_query GetUser, :user,
as: :user,
except: [:name]
derive_query ListUsers, list_of(:user),
as: :users,
arg_types: [status: :user_status]
end
derive_mutation_input CreateUser
object :user_mutations do
derive_mutation CreateUser, :user, input_object?: true, then: &fetch_user/1
derive_mutation SuspendUser, :user, then: &fetch_user/1
derive_mutation ReinstateUser, :user, then: &fetch_user/1
end
end
Link to this section Summary
Link to this section Functions
Defines an Absinthe
mutation
for a Command.
Options
:as
- The name to use for the mutation. Defaults to the query_module name snake_cased.:then
- Afunction/1
that accepts the result of the command execution. The function should return the standardAbsinthe
{:ok, response}
or{:error, error}
tuple.:input_object?
-true | false
. Defaults tofalse
- If
true
, one arg with the name of:input
will be generated. - If
true
, aninput_object
for the Command is expected to exist. Seederive_mutation_input/2
.
- If
Defines an Absinthe
input_object
for a Command.
Options
:as
- The name to use for the query. Defaults to the command_module name snake_cased with_input
appended.
Defines an Absinthe
query
from a Query.
Options
:as
- The name to use for the query. Defaults to the query_module name snake_cased.:only
- Use only the filters listed:except
- Create filters for all except those listed