JoostSijm пре 6 година
родитељ
комит
cd97202ec1
1 измењених фајлова са 98 додато и 2 уклоњено
  1. 98 2
      app/models.py

+ 98 - 2
app/models.py

@@ -2,7 +2,7 @@
 
 import datetime
 
-from sqlalchemy import MetaData, Column, ForeignKey, Integer, String, SmallInteger, DateTime
+from sqlalchemy import MetaData, Column, ForeignKey, Integer, String, SmallInteger, DateTime, Table
 from sqlalchemy.orm import relationship, backref
 from sqlalchemy.ext.declarative import declarative_base
 
@@ -49,7 +49,7 @@ class ResourceTrack(Base):
     resource_type = Column(SmallInteger)
     date_time = Column(DateTime, default=datetime.datetime.utcnow)
     state_id = Column(Integer, ForeignKey('state.id'))
-    resource_track = relationship(
+    state = relationship(
         "State",
         backref=backref("resource_tracks", lazy="dynamic")
     )
@@ -76,8 +76,104 @@ class ResourceStat(Base):
     )
 
 
+state_region = Table('state_region', Base.metadata,
+    Column('state_id', Integer, ForeignKey('state.id')),
+    Column('region_id', Integer, ForeignKey('region.id'))
+)
+
 class State(Base):
     """Model for state"""
     __tablename__ = 'state'
     id = Column(Integer, primary_key=True)
     name = Column(String)
+    regions = relationship("Region", secondary=state_region)
+
+class Department(Base):
+    """Model for department"""
+    __tablename__ = 'department'
+    id = Column(Integer, primary_key=True)
+    name = Column(String)
+    department_type = Column(Integer)
+
+
+class DepartmentStat(Base):
+    """Model for departent stat"""
+    __tablename__ = 'department_stat'
+    id = Column(Integer, primary_key=True)
+    date_time = Column(DateTime)
+    points = Column(SmallInteger)
+
+    player_id = Column(Integer, ForeignKey('player.id'))
+    player = relationship(
+        "Player",
+        backref=backref("department_stats", lazy="dynamic")
+    )
+
+    department_id = Column(Integer, ForeignKey('department.id'))
+    department = relationship(
+        "Department",
+        backref=backref("stats", lazy="dynamic")
+    )
+
+
+player_party = Table('player_party', Base.metadata,
+    Column('player_id', Integer, ForeignKey('player.id')),
+    Column('party_id', Integer, ForeignKey('party.id'))
+)
+
+player_residency = Table('player_residency', Base.metadata,
+    Column('player_id', Integer, ForeignKey('player.id')),
+    Column('region_id', Integer, ForeignKey('region.id'))
+)
+
+player_location  = Table('player_location', Base.metadata,
+    Column('player_id', Integer, ForeignKey('player.id')),
+    Column('region_id', Integer, ForeignKey('region.id'))
+)
+
+class Player(Base):
+    """Model for player"""
+    __tablename__ = 'player'
+    id = Column(Integer, primary_key=True)
+    name = Column(String)
+    nation = Column(String)
+    residencies = relationship("Region", secondary=player_residency)
+    locations = relationship("Region", secondary=player_location)
+    parties = relationship("Region", secondary=player_party)
+
+
+class Party(Base):
+    """Model for party"""
+    __tablename__ = 'party'
+    id = Column(Integer, primary_key=True)
+    name = Column(String)
+    description = Column(String(512))
+    from_date_time = Column(DateTime)
+    until_date_time = Column(DateTime)
+
+
+class Election(Base):
+    """Model for election"""
+    __tablename__ = 'election'
+    id = Column(Integer, primary_key=True)
+    state_id = Column(Integer, ForeignKey('state.id'))
+    convocation_date_time = Column(DateTime)
+
+    state = relationship(
+        "State",
+        backref=backref("elections", lazy="dynamic")
+    )
+
+
+class ElectionStat(Base):
+    """Model for election stat"""
+    __tablename__ = 'election_stat'
+    id = Column(Integer, primary_key=True)
+    percentage = Column(SmallInteger)
+    seats = Column(SmallInteger)
+
+    election_id = Column(Integer, ForeignKey('election.id'))
+    election = relationship(
+        "Election",
+        backref=backref("election_stats", lazy="dynamic")
+    )