| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 | """Database module"""from datetime import datetimefrom app import sessionfrom app.models import State, Region, Player, StateRegion, PlayerLocation, PlayerResidencydef 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 regionsdef 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()
 |