Skip to content

Instantly share code, notes, and snippets.

@benweatherman
Created October 3, 2017 23:56
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save benweatherman/6bc1694aff72394d7011c8bdb49328e8 to your computer and use it in GitHub Desktop.
Save benweatherman/6bc1694aff72394d7011c8bdb49328e8 to your computer and use it in GitHub Desktop.
Nested GraphQL Objects
fun: OrderedDict([('raw', 10), ('display', 'ten')])
lotsOfFun: [OrderedDict([('raw', 0)]), OrderedDict([('raw', 1)]), OrderedDict([('raw', 2)]), OrderedDict([('raw', 3)]), OrderedDict([('raw', 4)]), OrderedDict([('raw', 5)]), OrderedDict([('raw', 6)]), OrderedDict([('raw', 7)]), OrderedDict([('raw', 8)]), OrderedDict([('raw', 9)])]
import graphene
import inflect
engine = inflect.engine()
class SuperNumber(graphene.ObjectType):
raw = graphene.Int()
display = graphene.String()
class Query(graphene.ObjectType):
fun = graphene.Field(SuperNumber, val=graphene.Int(required=True))
lotsOfFun = graphene.List(SuperNumber, end=graphene.Int(required=True))
def resolve_fun(self, args, context, info):
return SuperNumber(raw=args['val'], display=engine.number_to_words(args['val']))
def resolve_lotsOfFun(self, args, context, info):
return [SuperNumber(raw=x, display=engine.number_to_words(x)) for x in range(args['end'])]
schema = graphene.Schema(query=Query)
result = schema.execute('''
query {
fun(val: 10) {
raw
display
}
lotsOfFun(end: 10) {
raw
}
}
''')
for key, val in result.data.items():
print(f'{key}: {val}')
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment