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 flask import Flask
from database import db_session, init_db from database import db_session, init_db
from flask_graphql import GraphQL from flask_graphql import GraphQLView
from schema import schema from schema import schema
app = Flask(__name__) app = Flask(__name__)
@ -27,7 +27,8 @@ default_query = '''
} }
}'''.strip() }'''.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 @app.teardown_appcontext

View File

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