mirror of
https://github.com/graphql-python/graphene.git
synced 2024-11-27 03:53:56 +03:00
40 lines
1.2 KiB
Python
40 lines
1.2 KiB
Python
from sqlalchemy import Column, DateTime, ForeignKey, Integer, String, func
|
|
from sqlalchemy.orm import backref, relationship
|
|
|
|
from database import Base
|
|
|
|
|
|
class Department(Base):
|
|
__tablename__ = 'department'
|
|
id = Column(Integer, primary_key=True)
|
|
name = Column(String)
|
|
|
|
|
|
class Role(Base):
|
|
__tablename__ = 'roles'
|
|
role_id = Column(Integer, primary_key=True)
|
|
name = Column(String)
|
|
|
|
|
|
class Employee(Base):
|
|
__tablename__ = 'employee'
|
|
id = Column(Integer, primary_key=True)
|
|
name = Column(String)
|
|
# Use default=func.now() to set the default hiring time
|
|
# of an Employee to be the current time when an
|
|
# Employee record was created
|
|
hired_on = Column(DateTime, default=func.now())
|
|
department_id = Column(Integer, ForeignKey('department.id'))
|
|
role_id = Column(Integer, ForeignKey('roles.role_id'))
|
|
# Use cascade='delete,all' to propagate the deletion of a Department onto its Employees
|
|
department = relationship(
|
|
Department,
|
|
backref=backref('employees',
|
|
uselist=True,
|
|
cascade='delete,all'))
|
|
role = relationship(
|
|
Role,
|
|
backref=backref('roles',
|
|
uselist=True,
|
|
cascade='delete,all'))
|