Packages
absinthe
1.1.5
1.11.0
1.10.2
1.10.1
1.10.0
1.9.1
1.9.0
1.8.0
1.7.11
1.7.10
1.7.9
1.7.8
1.7.7
1.7.6
1.7.5
1.7.4
1.7.3
1.7.2
1.7.1
1.7.0
1.6.8
1.6.7
retired
1.6.6
1.6.5
1.6.4
1.6.3
1.6.2
1.6.1
1.6.0
1.6.0-rc.1
1.6.0-rc.0
1.5.5
1.5.4
1.5.3
1.5.2
1.5.1
1.5.0
1.5.0-rc.5
1.5.0-rc.4
1.5.0-rc.3
1.5.0-rc.2
1.5.0-rc.1
1.5.0-rc.0
1.5.0-beta.2
1.5.0-beta.1
1.5.0-beta.0
1.5.0-alpha.4
1.5.0-alpha.3
1.5.0-alpha.2
1.5.0-alpha.1
1.5.0-alpha.0
1.4.16
1.4.15
1.4.14
1.4.13
1.4.12
1.4.11
1.4.10
1.4.9
1.4.8
retired
1.4.7
1.4.6
1.4.5
1.4.4
1.4.3
1.4.2
1.4.1
1.4.0
1.4.0-rc.3
1.4.0-rc.2
1.4.0-rc.1
1.4.0-rc.0
1.4.0-beta.5
1.4.0-beta.4
1.4.0-beta.3
1.4.0-beta.2
1.4.0-beta.1
1.3.2
1.3.1
1.3.0
1.3.0-rc.0
1.3.0-beta.2
1.3.0-beta.1
1.3.0-beta.0
1.2.6
1.2.5
1.2.4
1.2.3
1.2.2
1.2.1
1.2.0
1.2.0-rc.0
1.2.0-beta.0
1.2.0-alpha0
1.2.0-alpha.2
1.2.0-alpha.1
1.1.11
1.1.10
1.1.9
1.1.8
1.1.7
1.1.6
1.1.5
1.1.4
1.1.3
1.1.2
1.1.1
1.1.0
1.0.0
0.5.2
0.5.1
0.5.0
0.4.6
0.4.5
0.4.4
0.4.3
0.4.2
0.4.1
0.4.0
0.2.3
0.2.2
0.2.1
0.1.0
GraphQL for Elixir
Current section
Files
Jump to
Current section
Files
lib/absinthe/execution/resolution/list.ex
defimpl Absinthe.Execution.Resolution, for: Absinthe.Type.List do
alias Absinthe.Execution.Resolution
def resolve(%{of_type: %{of_type: _} = wrapped_type}, execution) do
# That's a list of list, we unwrap and pass it while keeping the selection_set
do_resolve(wrapped_type, wrapped_type, execution)
end
def resolve(%{of_type: wrapped_type}, %{resolution: %{ast_node: %{selection_set: nil}}} = execution) do
# There's no selection set, do inner resolution on the wrapped type
do_resolve(wrapped_type, wrapped_type, execution)
end
def resolve(%{of_type: wrapped_type}, %{resolution: %{ast_node: %{selection_set: selection_set}}} = execution) do
# There is a selection set, resolve the selection set
do_resolve(wrapped_type, selection_set, execution)
end
def do_resolve(wrapped_type, inner_to_resolve, %{resolution: %{target: target}} = execution) do
{values_to_return, execution_to_return} = Enum.reduce(target, {[], execution}, fn
(value_to_resolve, {values_before, current_execution}) ->
this_resolution = %Resolution{type: wrapped_type, target: value_to_resolve, ast_node: execution.resolution.ast_node}
{:ok, result, next_execution} = Resolution.resolve(inner_to_resolve,
%{current_execution | resolution: this_resolution}
)
{[result|values_before], next_execution}
end)
{:ok, Enum.reverse(values_to_return), execution_to_return}
end
end