瀏覽代碼

Improve database functions

JoostSijm 6 年之前
父節點
當前提交
548b2c718c
共有 2 個文件被更改,包括 35 次插入23 次删除
  1. 30 18
      app/database.py
  2. 5 5
      app/models.py

+ 30 - 18
app/database.py

@@ -40,35 +40,39 @@ def save_player_market(market):
 def _save_player_market(session, market_track, market):
     """Save player market to database"""
     for item_type, offers in market.items():
-        item_dict = offers[0]
-        market_stat = PlayerMarketStat()
-        player = session.query(Player).get(item_dict['player_id'])
-        if not player:
-            player = save_player(session, item_dict)
-        market_stat.player_id = player.id
-        market_stat.item_type = item_type
-        market_stat.total_offers = len(offers)
-        market_stat.amount = item_dict['amount']
-        market_stat.price = item_dict['price']
-        market_stat.half_t_average = calculate_purchage_amount(offers, 5e11)
-        market_stat.one_t_average = calculate_purchage_amount(offers, 1e12)
-        market_stat.two_t_average = calculate_purchage_amount(offers, 2e12)
-        market_stat.five_t_average = calculate_purchage_amount(offers, 5e12)
-        market_stat.market_track_id = market_track.id
-        session.add(market_stat)
+        if offers:
+            item_dict = offers[0]
+            market_stat = PlayerMarketStat()
+            player = session.query(Player).get(item_dict['player_id'])
+            if not player:
+                player = save_player(session, item_dict)
+            market_stat.player_id = player.id
+            market_stat.item_type = item_type
+            market_stat.amount = item_dict['amount']
+            market_stat.price = item_dict['price']
+
+            market_stat.total_offers = len(offers)
+            market_stat.half_t_average = calculate_purchage_amount(offers, 5e11)
+            market_stat.one_t_average = calculate_purchage_amount(offers, 1e12)
+            market_stat.two_t_average = calculate_purchage_amount(offers, 2e12)
+            market_stat.five_t_average = calculate_purchage_amount(offers, 5e12)
+            market_stat.market_track_id = market_track.id
+            session.add(market_stat)
 
 def _save_state_market(session, market_track, market):
     """Save state market"""
     for item_dict in market:
         market_stat = StateMarketStat()
+        region = session.query(Region).get(item_dict['region_id'])
+        if not region:
+            region = save_region(session, item_dict)
+        market_stat.region_id = region.id
         market_stat.market_track_id = market_track.id
         market_stat.item_type = item_dict['item_type'] - 1000
-        market_stat.region_id = item_dict['region_id']
         market_stat.amount = item_dict['amount']
         market_stat.price = item_dict['price']
         session.add(market_stat)
 
-
 def save_player(session, item_dict):
     """Save player to database"""
     player = Player()
@@ -76,3 +80,11 @@ def save_player(session, item_dict):
     player.name = item_dict['player_name']
     session.add(player)
     return player
+
+def save_region(session, item_dict):
+    """Save player to database"""
+    region = Region()
+    region.id = item_dict['region_id']
+    region.name = item_dict['region_name']
+    session.add(region)
+    return region

+ 5 - 5
app/models.py

@@ -55,7 +55,7 @@ class PlayerMarketStat(Base):
     five_t_average = Column(Integer)
     total_offers = Column(Integer)
 
-    player_id = Column(Integer, ForeignKey('player.id'))
+    player_id = Column(BigInteger, ForeignKey('player.id'))
     player = relationship(
         'Player',
         backref=backref('player_market_stats', lazy='dynamic')
@@ -76,10 +76,10 @@ class StateMarketStat(Base):
     price = Column(Integer)
     amount = Column(BigInteger)
 
-    state_id = Column(Integer, ForeignKey('state.id'))
-    state = relationship(
-        'State',
-        backref=backref('state_market_stats', lazy='dynamic')
+    region_id = Column(Integer, ForeignKey('region.id'))
+    region = relationship(
+        'Region',
+        backref=backref('region_market_stats', lazy='dynamic')
     )
 
     market_track_id = Column(Integer, ForeignKey('market_track.id'))