models.py 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. """Database models"""
  2. from sqlalchemy import MetaData, Column, ForeignKey, Integer, String, SmallInteger, DateTime
  3. from sqlalchemy.orm import relationship, backref
  4. from sqlalchemy.ext.declarative import declarative_base
  5. meta = MetaData(naming_convention={
  6. "ix": "ix_%(column_0_label)s",
  7. "uq": "uq_%(table_name)s_%(column_0_name)s",
  8. "ck": "ck_%(table_name)s_%(constraint_name)s",
  9. "fk": "fk_%(table_name)s_%(column_0_name)s_%(referred_table_name)s",
  10. "pk": "pk_%(table_name)s"
  11. })
  12. Base = declarative_base(metadata=meta)
  13. class Player(Base):
  14. """Model for player"""
  15. __tablename__ = 'player'
  16. id = Column(Integer, primary_key=True)
  17. name = Column(String)
  18. nation = Column(String)
  19. class State(Base):
  20. """Model for state"""
  21. __tablename__ = 'state'
  22. id = Column(Integer, primary_key=True)
  23. name = Column(String)
  24. class Department(Base):
  25. """Model for department"""
  26. __tablename__ = 'department'
  27. id = Column(Integer, primary_key=True)
  28. name = Column(String)
  29. department_type = Column(Integer)
  30. state_id = Column(Integer, ForeignKey('state.id'))
  31. state = relationship(
  32. 'State',
  33. backref=backref('elections', lazy='dynamic')
  34. )
  35. class DepartmentStat(Base):
  36. """Model for departent stat"""
  37. __tablename__ = 'department_stat'
  38. id = Column(Integer, primary_key=True)
  39. date_time = Column(DateTime)
  40. points = Column(SmallInteger)
  41. player_id = Column(Integer, ForeignKey('player.id'))
  42. player = relationship(
  43. 'Player',
  44. backref=backref('department_stats', lazy='dynamic')
  45. )
  46. department_id = Column(Integer, ForeignKey('department.id'))
  47. department = relationship(
  48. 'Department',
  49. backref=backref('stats', lazy='dynamic')
  50. )