import graphene

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):
        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)