Updated SQLAlchemy example

This commit is contained in:
Syrus Akbary 2016-07-22 20:32:18 -07:00
parent af4c63512c
commit 8ea2fde16e
2 changed files with 13 additions and 16 deletions

View File

@ -1,7 +1,7 @@
from flask import Flask
from database import db_session, init_db
from flask_graphql import GraphQL
from flask_graphql import GraphQLView
from schema import schema
app = Flask(__name__)
@ -27,7 +27,8 @@ default_query = '''
}
}'''.strip()
GraphQL(app, schema=schema, default_query=default_query)
app.add_url_rule('/graphql', view_func=GraphQLView.as_view('graphql', schema=schema, graphiql=True))
@app.teardown_appcontext

View File

@ -1,40 +1,36 @@
import graphene
from graphene import relay
from graphene.contrib.sqlalchemy import (SQLAlchemyConnectionField,
from graphene_sqlalchemy import (SQLAlchemyConnectionField,
SQLAlchemyObjectType,
SQLAlchemyNode)
from models import Department as DepartmentModel
from models import Employee as EmployeeModel
from models import Role as RoleModel
schema = graphene.Schema()
@schema.register
class Department(SQLAlchemyNode):
class Department(SQLAlchemyNode, SQLAlchemyObjectType):
class Meta:
model = DepartmentModel
@schema.register
class Employee(SQLAlchemyNode):
class Employee(SQLAlchemyNode, SQLAlchemyObjectType):
class Meta:
model = EmployeeModel
@schema.register
class Role(SQLAlchemyNode):
class Role(SQLAlchemyNode, SQLAlchemyObjectType):
class Meta:
model = RoleModel
identifier = 'role_id'
class Query(graphene.ObjectType):
node = relay.NodeField(Employee)
node = SQLAlchemyNode.Field()
all_employees = SQLAlchemyConnectionField(Employee)
all_roles = SQLAlchemyConnectionField(Role)
role = relay.NodeField(Role)
role = graphene.Field(Role)
schema.query = Query
schema = graphene.Schema(query=Query, types=[Department, Employee, Role])