Skip to content

Commit 74a4043

Browse files
author
evalette
committed
update flask sqlalchemy examples
1 parent 1f9252f commit 74a4043

File tree

4 files changed

+41
-8
lines changed

4 files changed

+41
-8
lines changed

examples/flask_sqlalchemy/app.py

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,14 +12,19 @@
1212
allEmployees {
1313
edges {
1414
node {
15-
id
16-
name
15+
id,
16+
name,
1717
department {
18+
id,
19+
name
20+
},
21+
role {
22+
id,
1823
name
1924
}
2025
}
2126
}
22-
}
27+
},
2328
}'''.strip()
2429

2530
GraphQL(app, schema=schema, default_query=default_query)

examples/flask_sqlalchemy/database.py

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ def init_db():
1414
# import all modules here that might define models so that
1515
# they will be registered properly on the metadata. Otherwise
1616
# you will have to import them first before calling init_db()
17-
from models import Department, Employee
17+
from models import Department, Employee, Role
1818
Base.metadata.drop_all(bind=engine)
1919
Base.metadata.create_all(bind=engine)
2020

@@ -24,10 +24,15 @@ def init_db():
2424
hr = Department(name='Human Resources')
2525
db_session.add(hr)
2626

27-
peter = Employee(name='Peter', department=engineering)
27+
manager = Role(name='manager')
28+
db_session.add(manager)
29+
engineer = Role(name='engineer')
30+
db_session.add(engineer)
31+
32+
peter = Employee(name='Peter', department=engineering, role=engineer)
2833
db_session.add(peter)
29-
roy = Employee(name='Roy', department=engineering)
34+
roy = Employee(name='Roy', department=engineering, role=engineer)
3035
db_session.add(roy)
31-
tracy = Employee(name='Tracy', department=hr)
36+
tracy = Employee(name='Tracy', department=hr, role=manager)
3237
db_session.add(tracy)
3338
db_session.commit()

examples/flask_sqlalchemy/models.py

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,12 @@ class Department(Base):
1010
name = Column(String)
1111

1212

13+
class Role(Base):
14+
__tablename__ = 'roles'
15+
role_id = Column(Integer, primary_key=True)
16+
name = Column(String)
17+
18+
1319
class Employee(Base):
1420
__tablename__ = 'employee'
1521
id = Column(Integer, primary_key=True)
@@ -19,9 +25,15 @@ class Employee(Base):
1925
# Employee record was created
2026
hired_on = Column(DateTime, default=func.now())
2127
department_id = Column(Integer, ForeignKey('department.id'))
28+
role_id = Column(Integer, ForeignKey('roles.role_id'))
2229
# Use cascade='delete,all' to propagate the deletion of a Department onto its Employees
2330
department = relationship(
2431
Department,
2532
backref=backref('employees',
2633
uselist=True,
2734
cascade='delete,all'))
35+
role = relationship(
36+
Role,
37+
backref=backref('roles',
38+
uselist=True,
39+
cascade='delete,all'))

examples/flask_sqlalchemy/schema.py

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
SQLAlchemyNode)
55
from models import Department as DepartmentModel
66
from models import Employee as EmployeeModel
7+
from models import Role as RoleModel
78

89
schema = graphene.Schema()
910

@@ -22,8 +23,18 @@ class Meta:
2223
model = EmployeeModel
2324

2425

26+
@schema.register
27+
class Role(SQLAlchemyNode):
28+
29+
class Meta:
30+
model = RoleModel
31+
identifier = 'role_id'
32+
33+
2534
class Query(graphene.ObjectType):
26-
node = relay.NodeField()
35+
node = relay.NodeField(Employee)
2736
all_employees = SQLAlchemyConnectionField(Employee)
37+
all_roles = SQLAlchemyConnectionField(Role)
38+
role = relay.NodeField(Role)
2839

2940
schema.query = Query

0 commit comments

Comments
 (0)