Ruslan Talpa пре 9 година
родитељ
комит
25b56d3a81
3 измењених фајлова са 15 додато и 5 уклоњено
  1. 2 3
      graphql/execute.lua
  2. 7 1
      graphql/rules.lua
  3. 6 1
      graphql/validate.lua

+ 2 - 3
graphql/execute.lua

@@ -170,9 +170,8 @@ local function completeValue(fieldType, result, subSelections, context)
     end
 
     local values = {}
-
-    for i, value in ipairs(values) do
-      values[i] = completeValue(innerType, value, context)
+    for i, value in ipairs(result) do
+      values[i] = completeValue(innerType, value, subSelections, context)
     end
 
     return values

+ 7 - 1
graphql/rules.lua

@@ -186,7 +186,13 @@ end
 
 function rules.requiredArgumentsPresent(node, context)
   local arguments = node.arguments or {}
-  local parentField = context.objects[#context.objects - 1].fields[node.name.value]
+  local parentField
+  if context.objects[#context.objects - 1].__type == 'List' then
+    parentField = context.objects[#context.objects - 2].fields[node.name.value]
+  else
+    parentField = context.objects[#context.objects - 1].fields[node.name.value]
+  end
+
   for name, argument in pairs(parentField.arguments) do
     if argument.__type == 'NonNull' then
       local present = util.find(arguments, function(argument)

+ 6 - 1
graphql/validate.lua

@@ -58,7 +58,12 @@ local visitors = {
 
   field = {
     enter = function(node, context)
-      local parentField = context.objects[#context.objects].fields[node.name.value]
+      local parentField
+      if context.objects[#context.objects].__type == 'List' then
+        parentField = context.objects[#context.objects - 1].fields[node.name.value]
+      else
+        parentField = context.objects[#context.objects].fields[node.name.value]
+      end
 
       -- false is a special value indicating that the field was not present in the type definition.
       local field = parentField and parentField.kind or false