models.py 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. """Database models"""
  2. from sqlalchemy import Column, ForeignKey, Integer, String, \
  3. DateTime, BigInteger, SmallInteger, Date
  4. from sqlalchemy.orm import relationship, backref
  5. from sqlalchemy.ext.declarative import declarative_base
  6. Base = declarative_base()
  7. class Factory(Base):
  8. """Model for factory"""
  9. __tablename__ = 'factory'
  10. id = Column(Integer, primary_key=True)
  11. name = Column(String)
  12. player_id = Column(BigInteger, ForeignKey('player.id'))
  13. player = relationship(
  14. 'User',
  15. backref=backref('factories', lazy='dynamic')
  16. )
  17. class FactoryTrack(Base):
  18. """Model for facctory track"""
  19. __tablename__ = 'factory_track'
  20. id = Column(Integer, primary_key=True)
  21. date_time = Column(DateTime)
  22. state_id = Column(Integer, ForeignKey('state.id'))
  23. state = relationship(
  24. 'State',
  25. backref=backref('factory_tracks', lazy='dynamic')
  26. )
  27. class FactoryLocation(Base):
  28. """Model for factory location"""
  29. __tablename__ = 'factory_location'
  30. factory_id = Column(Integer, ForeignKey('factory.id'), primary_key=True)
  31. region_id = Column(Integer, ForeignKey('region.id'), primary_key=True)
  32. from_date_time = Column(DateTime)
  33. until_date_time = Column(DateTime)
  34. class FactoryStat(Base):
  35. """Model for factory"""
  36. __tablename__ = 'factory_stat'
  37. id = Column(Integer, primary_key=True)
  38. level = Column(SmallInteger)
  39. workers = Column(SmallInteger)
  40. experience = Column(Integer)
  41. wage = Column(Integer)
  42. factory_id = Column(Integer, ForeignKey('factory.id'))
  43. factory = relationship(
  44. 'FactoryTrack',
  45. backref=backref('factory_stats', lazy='dynamic')
  46. )
  47. factory_track_id = Column(Integer, ForeignKey('factory_track.id'))
  48. factory_track = relationship(
  49. 'FactoryTrack',
  50. backref=backref('factory_stats', lazy='dynamic')
  51. )
  52. class State(Base):
  53. """Model for state"""
  54. __tablename__ = 'state'
  55. id = Column(Integer, primary_key=True)
  56. name = Column(String)
  57. regions = relationship(
  58. 'Region',
  59. secondary='state_region',
  60. backref=backref('states', lazy='dynamic'),
  61. lazy='dynamic'
  62. )
  63. class Region(Base):
  64. """Model for region"""
  65. __tablename__ = 'region'
  66. id = Column(Integer, primary_key=True)
  67. name = Column(String)
  68. class Player(Base):
  69. """Model for player"""
  70. __tablename__ = 'player'
  71. id = Column(BigInteger, primary_key=True)
  72. name = Column(String)
  73. nation = Column(String)
  74. registration_date = Column(Date)