models.py 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. """Database models"""
  2. import datetime
  3. from sqlalchemy import MetaData, Column, ForeignKey, Integer, String, SmallInteger, DateTime
  4. from sqlalchemy.orm import relationship, backref
  5. from sqlalchemy.ext.declarative import declarative_base
  6. meta = MetaData(naming_convention={
  7. "ix": "ix_%(column_0_label)s",
  8. "uq": "uq_%(table_name)s_%(column_0_name)s",
  9. "ck": "ck_%(table_name)s_%(constraint_name)s",
  10. "fk": "fk_%(table_name)s_%(column_0_name)s_%(referred_table_name)s",
  11. "pk": "pk_%(table_name)s"
  12. })
  13. Base = declarative_base(metadata=meta)
  14. class Region(Base):
  15. """Model for region"""
  16. __tablename__ = 'region'
  17. id = Column(Integer, primary_key=True)
  18. name = Column(String)
  19. gold_limit = Column(SmallInteger)
  20. oil_limit = Column(SmallInteger)
  21. ore_limit = Column(SmallInteger)
  22. uranium_limit = Column(SmallInteger)
  23. diamond_limit = Column(SmallInteger)
  24. class DeepExploration(Base):
  25. """Model for deep exploration"""
  26. __tablename__ = 'deep_exploration'
  27. id = Column(Integer, primary_key=True)
  28. date_time_end = Column(DateTime)
  29. region_id = Column(Integer)
  30. resource_type = Column(SmallInteger)
  31. region_id = Column(Integer, ForeignKey('region.id'))
  32. region_track = relationship(
  33. "Region",
  34. backref=backref("deep_explorations", lazy="dynamic")
  35. )
  36. class ResourceTrack(Base):
  37. """Model for resource track"""
  38. __tablename__ = 'resource_track'
  39. id = Column(Integer, primary_key=True)
  40. resource_type = Column(SmallInteger)
  41. date_time = Column(DateTime, default=datetime.datetime.utcnow)
  42. state_id = Column(Integer, ForeignKey('state.id'))
  43. resource_track = relationship(
  44. "State",
  45. backref=backref("resource_tracks", lazy="dynamic")
  46. )
  47. class ResourceStat(Base):
  48. """Model for resource stat"""
  49. __tablename__ = 'resource_stat'
  50. id = Column(Integer, primary_key=True)
  51. explored = Column(SmallInteger)
  52. deep_exploration = Column(SmallInteger)
  53. percentage_explored = Column(SmallInteger)
  54. percentage_total = Column(SmallInteger)
  55. resource_track_id = Column(Integer, ForeignKey('resource_track.id'))
  56. resource_track = relationship(
  57. "ResourceTrack",
  58. backref=backref("resource_stats", lazy="dynamic")
  59. )
  60. region_id = Column(Integer, ForeignKey('region.id'))
  61. region = relationship(
  62. "Region",
  63. backref=backref("resource_stats", lazy="dynamic")
  64. )
  65. class State(Base):
  66. """Model for state"""
  67. __tablename__ = 'state'
  68. id = Column(Integer, primary_key=True)
  69. name = Column(String)