| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 |
- """Database module"""
- from datetime import datetime
- from app import session
- from app.models import State, Region, Player, StateRegion, PlayerLocation, PlayerResidency
- def get_state_regions(state_id):
- """Get regions from state"""
- state = session.query(State).get(state_id)
- regions = state.regions.filter(StateRegion.until_date_time == None).all()
- return regions
- def save_citizens(region_id, citizens):
- """Save citizens to database"""
- for player_dict in citizens:
- player = session.query(Player).get(player_dict['id'])
- if player is None:
- player = Player()
- player.id = player_dict['id']
- player.name = player_dict['name']
- session.add(player)
- session.commit()
- last_region = player.locations.first()
- if not last_region or last_region.id != region_id:
- player_location = PlayerLocation()
- player_location.player_id = player.id
- player_location.region_id = region_id
- player_location.from_date_time = datetime.now()
- session.add(player_location)
- session.commit()
- if last_region:
- old_player_location = session.query(PlayerLocation) \
- .filter(PlayerLocation.player_id == player.id) \
- .filter(PlayerLocation.region_id == last_region.id).first()
- old_player_location.until_date_time = datetime.now()
- session.commit()
- def save_residents(region_id, residents):
- """Save residents to database"""
- for player_dict in residents:
- player = session.query(Player).get(player_dict['id'])
- if player is None:
- player = Player()
- player.id = player_dict['id']
- player.name = player_dict['name']
- session.add(player)
- session.commit()
- last_residency = player.residencies.first()
- if not last_residency or last_residency.id != region_id:
- player_location = PlayerResidency()
- player_location.player_id = player.id
- player_location.region_id = region_id
- player_location.from_date_time = datetime.now()
- session.add(player_location)
- session.commit()
- if last_residency:
- old_player_residency = session.query(PlayerResidency) \
- .filter(PlayerResidency.player_id == player.id) \
- .filter(PlayerResidency.region_id == last_residency.id).first()
- old_player_residency.until_date_time = datetime.now()
- session.commit()
|