defmodule AbsintheRemote do
@moduledoc """
Documentation for `AbsintheRemote`.
"""
alias Absinthe.{Pipeline, Phase}
def run(document, schema, options \\ []) do
options = Keyword.put(options, :pipeline_modifier, &custom_pipeline/2)
Absinthe.run(
document,
schema,
options
)
end
def run!(document, schema, options \\ []) do
options = Keyword.put(options, :pipeline_modifier, &custom_pipeline/2)
Absinthe.run!(
document,
schema,
options
)
end
defp custom_pipeline(pipeline, options) do
pipeline
|> Absinthe.Pipeline.replace(
Absinthe.Phase.Document.Execution.Resolution,
{AbsintheRemote.RemoteResolution, []}
)
|> Pipeline.insert_after(
Phase.Document.Directives,
{AbsintheRemote.ResultPhase, options}
)
end
end