Skip to content

Instantly share code, notes, and snippets.

@mattbillenstein
Created June 23, 2016 19:37
Show Gist options
  • Save mattbillenstein/ecc3e8b3b1130e615b2f6f6e5beca5ea to your computer and use it in GitHub Desktop.
Save mattbillenstein/ecc3e8b3b1130e615b2f6f6e5beca5ea to your computer and use it in GitHub Desktop.
#!/usr/bin/env python2
import graphene
import logging
logging.basicConfig(level=logging.ERROR)
logger = logging.getLogger()
logger.addHandler(logging.StreamHandler())
class Tea(graphene.ObjectType):
name = graphene.String()
steeping_time = graphene.Int()
TEAS = [
Tea(name='Earl Grey Blue Star', steeping_time=5),
Tea(name='Milk Oolong', steeping_time=3),
Tea(name='Gunpowder Golden Temple', steeping_time=3),
Tea(name='Assam Hatimara', steeping_time=5),
Tea(name='Bancha', steeping_time=2),
Tea(name='Ceylon New Vithanakande', steeping_time=5),
Tea(name='Golden Tip Yunnan', steeping_time=5),
Tea(name='Jasmine Phoenix Pearls', steeping_time=3),
Tea(name='Kenya Milima', steeping_time=5),
Tea(name='Pu Erh First Grade', steeping_time=4),
Tea(name='Sencha Makoto', steeping_time=3),
]
class Store(graphene.ObjectType):
teas = graphene.List(Tea, order_by=graphene.String())
def resolve_teas(self, args, info):
print args
order_by = args.get("order_by")
if order_by == "steepingTime":
return sorted(self.teas, key=lambda tea: tea.steeping_time)
elif order_by == "name":
return sorted(self.teas, key=lambda tea: tea.name)
return self.teas
class Query(graphene.ObjectType):
store = graphene.Field(Store)
def resolve_store(self, args, info):
return Store(teas=TEAS)
schema = graphene.Schema(query=Query)
result = schema.execute('''
query {
store {
teas(orderBy:"name") {
name
steepingTime
}
}
}
''')
print 'orderBy', result.data
result = schema.execute('''
query {
store {
teas(orderby:"name") {
name
steepingTime
}
}
}
''')
print 'orderby', result.data
## output:
(tve)mattb@local:~/src $ ./tea_store.schema.py
<ProxySnakeDict {'order_by': u'name'}>
orderBy OrderedDict([('store', OrderedDict([('teas', [OrderedDict([('name', u'Assam Hatimara'), ('steepingTime', 5)]), OrderedDict([('name', u'Bancha'), ('steepingTime', 2)]), OrderedDict([('name', u'Ceylon New Vithanakande'), ('steepingTime', 5)]), OrderedDict([('name', u'Earl Grey Blue Star'), ('steepingTime', 5)]), OrderedDict([('name', u'Golden Tip Yunnan'), ('steepingTime', 5)]), OrderedDict([('name', u'Gunpowder Golden Temple'), ('steepingTime', 3)]), OrderedDict([('name', u'Jasmine Phoenix Pearls'), ('steepingTime', 3)]), OrderedDict([('name', u'Kenya Milima'), ('steepingTime', 5)]), OrderedDict([('name', u'Milk Oolong'), ('steepingTime', 3)]), OrderedDict([('name', u'Pu Erh First Grade'), ('steepingTime', 4)]), OrderedDict([('name', u'Sencha Makoto'), ('steepingTime', 3)])])]))])
orderby None
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment