models.py 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. """Database models"""
  2. import datetime
  3. from sqlalchemy import Column, ForeignKey, Integer, String, SmallInteger, DateTime
  4. from sqlalchemy.orm import relationship, backref
  5. from sqlalchemy.ext.declarative import declarative_base
  6. Base = declarative_base()
  7. class State(Base):
  8. """Model for state"""
  9. __tablename__ = 'state'
  10. id = Column(Integer, primary_key=True)
  11. name = Column(String)
  12. class Region(Base):
  13. """Model for region"""
  14. __tablename__ = 'region'
  15. id = Column(Integer, primary_key=True)
  16. name = Column(String)
  17. gold_limit = Column(SmallInteger)
  18. oil_limit = Column(SmallInteger)
  19. ore_limit = Column(SmallInteger)
  20. uranium_limit = Column(SmallInteger)
  21. diamond_limit = Column(SmallInteger)
  22. class StateRegion(Base):
  23. """Model for state region"""
  24. __tablename__ = 'state_region'
  25. state_id = Column(Integer, ForeignKey('state.id'), primary_key=True)
  26. region_id = Column(Integer, ForeignKey('region.id'), primary_key=True)
  27. from_date_time = Column(DateTime, primary_key=True)
  28. until_date_time = Column(DateTime)
  29. class DeepExploration(Base):
  30. """Model for deep exploration"""
  31. __tablename__ = 'deep_exploration'
  32. id = Column(Integer, primary_key=True)
  33. until_date_time = Column(DateTime)
  34. points = Column(Integer)
  35. resource_type = Column(SmallInteger)
  36. region_id = Column(Integer, ForeignKey('region.id'))
  37. region = relationship(
  38. 'Region',
  39. backref=backref('deep_explorations', lazy='dynamic')
  40. )
  41. class DeepExplorationOrder(Base):
  42. """Model for deep exploration order"""
  43. __tablename__ = 'deep_exploration_order'
  44. id = Column(Integer, primary_key=True)
  45. resource_type = Column(SmallInteger, nullable=False)
  46. order_type = Column(SmallInteger, nullable=False)
  47. amount = Column(Integer)
  48. from_date_time = Column(DateTime)
  49. until_date_time = Column(DateTime)
  50. order_types = {
  51. 0: 'max',
  52. 1: 'fixed',
  53. 2: 'percentage',
  54. 3: 'auto',
  55. }
  56. def order_type_name(self):
  57. """Type name"""
  58. if self.order_type in self.order_types:
  59. return self.order_types[self.type]
  60. return 'unknown'