| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990 | """Database module"""from datetime import datetimefrom app import SESSIONfrom app.models import State, Region, Player, MarketTrack, StateMarketStat, PlayerMarketStatfrom app.app import calculate_purchage_amountdef get_new_market_track(session, resources, state_resources, items):    """Get ner market track"""    market_track = MarketTrack()    market_track.date_time = datetime.now()    market_track.resources = resources    market_track.state_resources = state_resources    market_track.items = items    session.add(market_track)    return market_trackdef save_resource_market(player_market, state_market):    """Save factories to database"""    session = SESSION()    market_track = get_new_market_track(session, True, True, False)    market_track.player_resources = True    market_track.state_resources = True    _save_player_market(session, market_track, player_market)    _save_state_market(session, market_track, state_market)    session.commit()    session.close()def save_player_market(market):    """Save player market"""    session = SESSION()    market_track = get_new_market_track(session, True, False, False)    session.add(market_track)    _save_player_market(session, market_track, market)def _save_player_market(session, market_track, market):    """Save player market to database"""    for item_type, offers in market.items():        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.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()    player.id = item_dict['player_id']    player.name = item_dict['player_name']    session.add(player)    return playerdef 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
 |