database.py 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. """Database module"""
  2. from datetime import datetime
  3. from app import SESSION
  4. from app.models import State, Region, Player, MarketTrack, StateMarketStat, PlayerMarketStat
  5. from app.app import calculate_purchage_amount
  6. def get_new_market_track(session, resources, state_resources, items):
  7. """Get ner market track"""
  8. market_track = MarketTrack()
  9. market_track.date_time = datetime.now()
  10. market_track.resources = resources
  11. market_track.state_resources = state_resources
  12. market_track.items = items
  13. session.add(market_track)
  14. return market_track
  15. def save_resource_market(player_market, state_market):
  16. """Save factories to database"""
  17. session = SESSION()
  18. market_track = get_new_market_track(session, True, True, False)
  19. market_track.player_resources = True
  20. market_track.state_resources = True
  21. _save_player_market(session, market_track, player_market)
  22. _save_state_market(session, market_track, state_market)
  23. session.commit()
  24. session.close()
  25. def save_player_market(market):
  26. """Save player market"""
  27. session = SESSION()
  28. market_track = get_new_market_track(session, True, False, False)
  29. session.add(market_track)
  30. _save_player_market(session, market_track, market)
  31. def _save_player_market(session, market_track, market):
  32. """Save player market to database"""
  33. for item_type, offers in market.items():
  34. item_dict = offers[0]
  35. market_stat = PlayerMarketStat()
  36. player = session.query(Player).get(item_dict['player_id'])
  37. if not player:
  38. player = save_player(session, item_dict)
  39. market_stat.player_id = player.id
  40. market_stat.item_type = item_type
  41. market_stat.total_offers = len(offers)
  42. market_stat.amount = item_dict['amount']
  43. market_stat.price = item_dict['price']
  44. market_stat.half_t_average = calculate_purchage_amount(offers, 5e11)
  45. market_stat.one_t_average = calculate_purchage_amount(offers, 1e12)
  46. market_stat.two_t_average = calculate_purchage_amount(offers, 2e12)
  47. market_stat.five_t_average = calculate_purchage_amount(offers, 5e12)
  48. market_stat.market_track_id = market_track.id
  49. session.add(market_stat)
  50. def _save_state_market(session, market_track, market):
  51. """Save state market"""
  52. for item_dict in market:
  53. market_stat = StateMarketStat()
  54. market_stat.market_track_id = market_track.id
  55. market_stat.item_type = item_dict['item_type'] - 1000
  56. market_stat.region_id = item_dict['region_id']
  57. market_stat.amount = item_dict['amount']
  58. market_stat.price = item_dict['price']
  59. session.add(market_stat)
  60. def save_player(session, item_dict):
  61. """Save player to database"""
  62. player = Player()
  63. player.id = item_dict['player_id']
  64. player.name = item_dict['player_name']
  65. session.add(player)
  66. return player