absinthe v1.3.2 Absinthe.Pipeline

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.

Summary

Functions

Return the part of a pipeline before a specific phase

Return the part of a pipeline after (and including) a specific phase

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

Types

data_t()
data_t() :: any

Functions

before(pipeline, phase)
before(t, atom) :: t

Return the part of a pipeline before a specific phase.

for_document(schema, options \\ [])
for_document(Absinthe.Schema.t, Keyword.t) :: t
for_schema(prototype_schema, options \\ [])
for_schema(nil | Absinthe.Schema.t, Keyword.t) :: t
from(pipeline, phase)
from(t, atom) :: t

Return the part of a pipeline after (and including) a specific phase.

insert_after(pipeline, phase, additional)
insert_after(t, Absinthe.Phase.t, Absinthe.Phase.t) :: t
insert_before(pipeline, phase, additional)
insert_before(t, Absinthe.Phase.t, Absinthe.Phase.t) :: t
reject(pipeline, pattern)
reject(t, Regex.t) :: t
replace(pipeline, phase, replacement)

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]
run(input, pipeline)
run(data_t, t) ::
  {:ok, data_t, [Absinthe.Phase.t]} |
  {:error, String.t, [Absinthe.Phase.t]}
run_phase(pipeline, input, done \\ [])
run_phase(t, data_t, [Absinthe.Phase.t]) ::
  {:ok, data_t, [Absinthe.Phase.t]} |
  {:error, String.t, [Absinthe.Phase.t]}
upto(pipeline, phase)
upto(t, atom) :: t

Return the part of a pipeline up to and including a specific phase.

without(pipeline, phase)
without(t, Absinthe.Phase.t) :: t