Created
June 23, 2016 19:37
-
-
Save mattbillenstein/ecc3e8b3b1130e615b2f6f6e5beca5ea to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/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