Skip to content

Instantly share code, notes, and snippets.

@Babatunde13
Created March 5, 2021 00:14
Show Gist options
  • Save Babatunde13/eb15a7ce43741edb7ff112de946c6c9b to your computer and use it in GitHub Desktop.
Save Babatunde13/eb15a7ce43741edb7ff112de946c6c9b to your computer and use it in GitHub Desktop.
import graphene
import json, csv
from datetime import datetime
from flask import Flask
from flask_graphql import GraphQLView
app = Flask(__name__)
class User(graphene.ObjectType):
id = graphene.ID()
username=graphene.String()
last_login = graphene.DateTime(required=False)
class Query(graphene.ObjectType):
users = graphene.List(User, limit=graphene.Int())
def resolve_users(self, info, limit):
return [
User(username='Alice', last_login=datetime.now()),
User(username='Bob', last_login=datetime.now()),
User(username='John', last_login=datetime.now()),
User(username='Steven', last_login=datetime.now())
][:limit]
class CreateUser(graphene.Mutation):
class Arguments:
username = graphene.String()
user = graphene.Field(User)
def mutate(self, info, username: str):
if info.context.get('is_vip'):
username = username.upper()
csv_writer = csv.writer('data.csv', delimeter=',')
csv_writer.writerow([username])
user = User(username=username, last_login=datetime.now())
return CreateUser(user=user)
class Mutation(graphene.ObjectType):
create_user = CreateUser.Field(name='createUser')
schema = graphene.Schema(query=Query, mutation=Mutation)
app.add_url_rule(
'/graphql',
view_func=GraphQLView.as_view(
'graphql',
schema=schema,
graphiql=True
)
)
result = schema.execute(
'''
mutation createUser($username: String){
createUser(username: $username) {
user {
username,
lastLogin
}
}
}
''',
variable_values = {'username': 'Bob'},
context={'is_vip': False}
)
items = dict(result.data.items())
print(json.dumps(items, indent=4))
if __name__ == '__main__':
app.run()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment