database.py 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. """Database module"""
  2. from datetime import datetime
  3. from app import Session
  4. from app.models import State, Region, Factory, FactoryTrack, FactoryStat, FactoryLocation
  5. def get_state(state_id):
  6. """Get regions from state"""
  7. session = Session()
  8. state = session.query(State).get(state_id)
  9. session.close()
  10. return state
  11. def save_factories(state_id, factories):
  12. """Save factories to database"""
  13. session = Session()
  14. session.close()
  15. factory_track = FactoryTrack()
  16. factory_track.state_id = state_id
  17. factory_track.date_time = datetime.now()
  18. session.add(factory_track)
  19. for factory_dict in factories:
  20. factory = session.query(Factory).get(factory_dict['id'])
  21. if factory is None:
  22. factory = save_factory(session, factory_dict)
  23. factory_stat = FactoryStat()
  24. factory_stat.level = factory_dict['level']
  25. factory_stat.experience = factory_dict['experience']
  26. factory_stat.wage = factory_dict['wage']
  27. factory_stat.workers = factory_dict['workers']
  28. factory_stat.factory_id = factory.id
  29. factory_stat.factory_track_id = factory_track.id
  30. session.add(factory_stat)
  31. current_location = session.query(FactoryLocation) \
  32. .filter(FactoryLocation.factory_id == factory.id) \
  33. .filter(FactoryLocation.until_date_time == None).first()
  34. if not current_location or current_location.region.name != factory_dict['region_name']:
  35. region = session.query(Region) \
  36. .filter(Region.name == factory_dict['region_name']).first()
  37. factory_location = FactoryLocation()
  38. factory_location.factory_id = factory.id
  39. factory_location.region_id = region.id
  40. factory_location.from_date_time = datetime.now()
  41. session.add(factory_location)
  42. if current_location:
  43. current_location.until_date_time = datetime.now()
  44. session.commit()
  45. session.close()
  46. def save_factory(session, factory_dict):
  47. """Save factory to database"""
  48. factory = Factory()
  49. factory.id = factory_dict['id']
  50. factory.name = factory_dict['name']
  51. factory.resource_type = factory_dict['resource_type']
  52. session.add(factory)
  53. return factory