Cqrs.Absinthe (cqrs_tools v0.5.28) View Source
Macros to derive queries and mutations from Queries and Commands, respectfully.
Configuration
:context_metadata_keys- A list of the keys in theAbsinthe.Resolutioncontextto 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
derive_enum :user_status, {ListUsers, :status}
object :user do
field :id, :id
field :name, :string
field :email, :string
field :status, :user_status
derive_query GetUserFriends, list_of(:user),
as: :friends,
parent_mappings: [user_id: & &1.id]
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
Functions
Defines a field backed by a Command resolver.
Defines an Absinthe Enum from a Command, Domain Event, or Ecto Schema.
Link to this section Functions
Defines a field backed by a Command resolver.
Options
:as- The name to use for the mutation. Defaults to the query_module name snake_cased.:before_resolve- Absinthe Middleware to run before the resolver.:after_resolve- Absinthe Middleware to run after the resolver.:arg_types- A list of filter names to absinthe types. See example.:parent_mappings- A keyword list of command fields to functions that receive the field's parent object as an argument.:field_transforms- A keyword list of command fields to functions that receive the field's current value as an argument.
Defines an Absinthe Enum from a Command, Domain Event, or Ecto Schema.
derive_input_object(object_name, object_source_module, opts \\ [])
View Source (macro)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/1that 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:inputwill be generated. - If
true, aninput_objectfor the Command is expected to exist. Seederive_mutation_input/2.
- If
:arg_types- A list of filter names to absinthe types. See example.:before_resolve- Absinthe Middleware to run before the resolver.:after_resolve- Absinthe Middleware to run after the resolver.:parent_mappings- A keyword list of command fields to functions that receive the field's parent object as an argument.:field_transforms- A keyword list of command fields to functions that receive the field's current value as an argument.:required- A list of command fields to make required; regardless of how they are defined in the command module.
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_inputappended.:arg_types- A list of filter names to absinthe types. See example.:required- A list of command fields to make required; regardless of how they are defined in the command module.
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:before_resolve- Absinthe Middleware to run before the resolver.:after_resolve- Absinthe Middleware to run after the resolver.:arg_types- A list of filter names to absinthe types. See example.:parent_mappings- A keyword list of query filters to functions that receive the field's parent object as an argument.:filter_transforms- A keyword list of query filters to functions that receive the filter's current value as an argument.:required- A list of query filters to make required; regardless of how they are defined in the query module.