Skip to content
This repository was archived by the owner on Jul 25, 2024. It is now read-only.

Commit fd18a53

Browse files
committed
More DRYing up
1 parent 29599a3 commit fd18a53

1 file changed

Lines changed: 11 additions & 8 deletions

File tree

lib/graphql/execution/executor.ex

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -173,8 +173,7 @@ defmodule GraphQL.Execution.Executor do
173173

174174
@spec complete_value(%ObjectType{}, ExecutionContext.t, GraphQL.Document.t, any, map) :: {ExecutionContext.t, map}
175175
defp complete_value(%ObjectType{} = return_type, context, field_asts, _info, result) do
176-
{context, sub_field_asts} = collect_sub_fields(context, return_type, field_asts)
177-
execute_fields(context, return_type, result, sub_field_asts.fields)
176+
complete_sub_fields(return_type, context, field_asts, result)
178177
end
179178

180179
@spec complete_value(%NonNull{}, ExecutionContext.t, GraphQL.Document.t, any, any) :: {ExecutionContext.t, map}
@@ -209,6 +208,16 @@ defmodule GraphQL.Execution.Executor do
209208
{context, GraphQL.Types.serialize(unwrap_type(return_type), result)}
210209
end
211210

211+
defp complete_union_or_interface(return_type, context, field_asts, info, result) do
212+
runtime_type = AbstractType.get_object_type(return_type, result, info.schema)
213+
complete_sub_fields(runtime_type, context, field_asts, result)
214+
end
215+
216+
defp complete_sub_fields(return_type, context, field_asts, result) do
217+
{context, sub_field_asts} = collect_sub_fields(context, return_type, field_asts)
218+
execute_fields(context, return_type, result, sub_field_asts.fields)
219+
end
220+
212221
defp collect_sub_fields(context, return_type, field_asts) do
213222
Enum.reduce field_asts, {context, %{fields: %{}, fragments: %{}}}, fn(field_ast, {context, field_fragment_map}) ->
214223
if selection_set = Map.get(field_ast, :selectionSet) do
@@ -341,10 +350,4 @@ defmodule GraphQL.Execution.Executor do
341350

342351
defp unwrap_type(type) when is_atom(type), do: type.type
343352
defp unwrap_type(type), do: type
344-
345-
defp complete_union_or_interface(return_type, context, field_asts, info, result) do
346-
runtime_type = AbstractType.get_object_type(return_type, result, info.schema)
347-
{context, sub_field_asts} = collect_sub_fields(context, runtime_type, field_asts)
348-
execute_fields(context, runtime_type, result, sub_field_asts.fields)
349-
end
350353
end

0 commit comments

Comments
 (0)