Absinthe.Pipeline (absinthe v1.5.4) View Source
Execute a pipeline of phases.
A pipeline is merely a list of phases. This module contains functions for building, modifying, and executing pipelines of phases.
Link to this section Summary
Functions
Return the part of a pipeline before a specific phase.
Return the part of a pipeline after (and including) a specific phase.
Return the pipeline with the phase/list of phases inserted after the supplied phase.
Return the pipeline with the phase/list of phases inserted before the supplied phase.
Return the pipeline with the phases matching the regex removed.
Replace a phase in a pipeline with another, supporting reusing the same options.
Return the part of a pipeline up to and including a specific phase.
Return the pipeline with the supplied phase removed.
Link to this section Types
Specs
data_t() :: any()
Specs
phase_config_t() :: Absinthe.Phase.t() | {Absinthe.Phase.t(), Keyword.t()}
Specs
t() :: [phase_config_t() | [phase_config_t()]]
Link to this section Functions
Specs
before(t(), phase_config_t()) :: t()
Return the part of a pipeline before a specific phase.
Examples
iex> Pipeline.before([A, B, C], B)
[A]
Specs
for_document(Absinthe.Schema.t(), Keyword.t()) :: t()
Specs
for_schema(nil | Absinthe.Schema.t(), Keyword.t()) :: t()
Specs
Return the part of a pipeline after (and including) a specific phase.
Examples
iex> Pipeline.from([A, B, C], B)
[B, C]
Specs
insert_after(t(), Absinthe.Phase.t(), phase_config_t() | [phase_config_t()]) :: t()
Return the pipeline with the phase/list of phases inserted after the supplied phase.
Examples
Add one phase after another:
iex> Pipeline.insert_after([A, C, D], A, B)
[A, B, C, D]
Add list of phases after another:
iex> Pipeline.insert_after([A, D, E], A, [B, C])
[A, B, C, D, E]
Specs
insert_before(t(), Absinthe.Phase.t(), phase_config_t() | [phase_config_t()]) :: t()
Return the pipeline with the phase/list of phases inserted before the supplied phase.
Examples
Add one phase before another:
iex> Pipeline.insert_before([A, C, D], C, B)
[A, B, C, D]
Add list of phase before another:
iex> Pipeline.insert_before([A, D, E], D, [B, C])
[A, B, C, D, E]
Specs
Return the pipeline with the phases matching the regex removed.
Examples
iex> Pipeline.reject([A, B, C], ~r/A|B/)
[C]
Specs
replace(t(), Absinthe.Phase.t(), phase_config_t()) :: t()
Replace a phase in a pipeline with another, supporting reusing the same options.
Examples
Replace a simple phase (without options):
iex> Pipeline.replace([A, B, C], B, X)
[A, X, C]
Replace a phase with options, retaining them:
iex> Pipeline.replace([A, {B, [name: "Thing"]}, C], B, X)
[A, {X, [name: "Thing"]}, C]
Replace a phase with options, overriding them:
iex> Pipeline.replace([A, {B, [name: "Thing"]}, C], B, {X, [name: "Nope"]})
[A, {X, [name: "Nope"]}, C]
Specs
run(data_t(), t()) :: {:ok, data_t(), [Absinthe.Phase.t()]} | {:error, String.t(), [Absinthe.Phase.t()]}
Specs
run_phase(t(), data_t(), [Absinthe.Phase.t()]) :: {:ok, data_t(), [Absinthe.Phase.t()]} | {:error, String.t(), [Absinthe.Phase.t()]}
Specs
upto(t(), phase_config_t()) :: t()
Return the part of a pipeline up to and including a specific phase.
Examples
iex> Pipeline.upto([A, B, C], B)
[A, B]
Specs
without(t(), Absinthe.Phase.t()) :: t()
Return the pipeline with the supplied phase removed.
Examples
iex> Pipeline.without([A, B, C], B)
[A, C]