Guest User

Untitled

a guest
Jan 20th, 2018
122
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.07 KB | None | 0 0
  1. import graphql
  2.  
  3. # build_executable schema
  4. #
  5. # accepts schema_definition (string) and resolvers (object) in style of graphql-tools
  6. # returns a schema ready for execution
  7.  
  8. def build_executable_schema(schema_definition, resolvers):
  9. ast = graphql.parse(schema_definition)
  10. schema = graphql.build_ast_schema(ast)
  11.  
  12. for typeName in resolvers:
  13. fieldType = schema.get_type(typeName)
  14.  
  15. for fieldName in resolvers[typeName]:
  16. if fieldType is graphql.GraphQLScalarType:
  17. fieldType.fields[fieldName].resolver = resolvers[typeName][fieldName]
  18. continue
  19.  
  20. field = fieldType.fields[fieldName]
  21. field.resolver = resolvers[typeName][fieldName]
  22.  
  23. if not fieldType.fields: continue
  24.  
  25. for remaining in fieldType.fields:
  26. if not fieldType.fields[remaining].resolver:
  27. fieldType.fields[remaining].resolver = \
  28. lambda value, info, _r=remaining, **args: value[_r]
  29.  
  30.  
  31. return schema
Add Comment
Please, Sign In to add comment