models.py 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  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. resource_type = Column(SmallInteger)
  13. player_id = Column(BigInteger, ForeignKey('player.id'))
  14. player = relationship(
  15. 'Player',
  16. backref=backref('factories', lazy='dynamic')
  17. )
  18. class FactoryTrack(Base):
  19. """Model for facctory track"""
  20. __tablename__ = 'factory_track'
  21. id = Column(Integer, primary_key=True)
  22. date_time = Column(DateTime)
  23. state_id = Column(Integer, ForeignKey('state.id'))
  24. state = relationship(
  25. 'State',
  26. backref=backref('factory_tracks', lazy='dynamic')
  27. )
  28. class FactoryLocation(Base):
  29. """Model for factory location"""
  30. __tablename__ = 'factory_location'
  31. factory_id = Column(Integer, ForeignKey('factory.id'), primary_key=True)
  32. region_id = Column(Integer, ForeignKey('region.id'), primary_key=True)
  33. from_date_time = Column(DateTime)
  34. until_date_time = Column(DateTime)
  35. class FactoryStat(Base):
  36. """Model for factory"""
  37. __tablename__ = 'factory_stat'
  38. id = Column(Integer, primary_key=True)
  39. level = Column(SmallInteger)
  40. workers = Column(SmallInteger)
  41. experience = Column(Integer)
  42. wage = Column(Integer)
  43. factory_id = Column(Integer, ForeignKey('factory.id'))
  44. factory = relationship(
  45. 'Factory',
  46. backref=backref('factory_stats', lazy='dynamic')
  47. )
  48. factory_track_id = Column(Integer, ForeignKey('factory_track.id'))
  49. factory_track = relationship(
  50. 'FactoryTrack',
  51. backref=backref('factory_stats', lazy='dynamic')
  52. )
  53. class State(Base):
  54. """Model for state"""
  55. __tablename__ = 'state'
  56. id = Column(Integer, primary_key=True)
  57. name = Column(String)
  58. class Region(Base):
  59. """Model for region"""
  60. __tablename__ = 'region'
  61. id = Column(Integer, primary_key=True)
  62. name = Column(String)
  63. class Player(Base):
  64. """Model for player"""
  65. __tablename__ = 'player'
  66. id = Column(BigInteger, primary_key=True)
  67. name = Column(String)
  68. nation = Column(String)
  69. registration_date = Column(Date)