def set_player_updated_at(pids): log("setting players as updated") if not pids: log('no players to update!') return now_str = _get_now_str() (Player.update( updated_at=now_str).where(Player.cfn_id << list(pids)).execute())
def save_ranking_results(ranking): player_source = [{ 'cfn_id': int(rank['pidx']), 'name': rank['userid'], 'subscribed': 0, 'region': rank['region'], 'platform': rank['accountsource'], } for rank in ranking] existing_pids = _insert_missing_players(player_source) rank_source = [{ 'player_cfn': int(rank['pidx']), 'league_points': int(rank['lp']), 'placement': int(rank['rownum']), 'favorite_character': int(rank['favchar']), } for rank in ranking] bulk_insert(Rank, rank_source) player_ids = [r['player_cfn'] for r in rank_source] set_subscribed(player_ids) player_update = [{ 'cfn_id': int(rank['pidx']), 'region': rank['region'], 'platform': rank['accountsource'], } for rank in ranking if int(rank['pidx']) in existing_pids] regions = defaultdict(set) platforms = defaultdict(set) for pu in player_update: regions[pu['region']].add(pu['cfn_id']) platforms[pu['platform']].add(pu['cfn_id']) for region, pids in regions.items(): (Player.update( region=region).where((Player.region >> None) & (Player.cfn_id << list(pids))).execute()) for platform, pids in platforms.items(): (Player.update(platform=platform).where((Player.platform >> None) & ( Player.cfn_id << list(pids))).execute())
def subscribe_to_new_player(player_model): existing = (Player.select().where(Player.cfn_id == player_model.cfn_id)) if existing: (Player.update( subscribed=1, name=player_model.name, region=player_model.region, platform=player_model.platform, ).where(Player.cfn_id == player_model.cfn_id).execute()) else: bulk_insert(Player, [{ 'cfn_id': player_model.cfn_id, 'name': player_model.name, 'region': player_model.region, 'platform': player_model.platform, 'subscribed': 1, }])
def set_subscribed(pids): log("updating affected players to subscribed") if not pids: return (Player.update(subscribed=1).where(Player.subscribed == 0, Player.cfn_id << list(pids)).execute())