def make_order_performance_chart_with_context(**context): game_id, start_time, end_time = context_parser(context, "game_id", "start_time", "end_time") start_time, end_time = get_time_defaults(game_id, start_time, end_time) user_ids = get_active_game_user_ids(game_id) for user_id in user_ids: print(f"*** user id: {user_id} ***") serialize_and_pack_order_performance_assets(game_id, user_id, start_time, end_time)
def get_game_balances(game_id: int, user_id: int, start_time: float = None, end_time: float = None): start_time, end_time = get_time_defaults(game_id, start_time, end_time) with engine.connect() as conn: return pd.read_sql(""" SELECT timestamp, symbol, balance, transaction_type, order_status_id, stock_split_id FROM game_balances WHERE game_id = %s AND user_id = %s AND balance_type = 'virtual_stock' AND timestamp >= %s AND timestamp <= %s ORDER BY symbol, id;""", conn, params=[game_id, user_id, start_time, end_time])
def log_multiplayer_winners_with_context(**context): game_id, start_time, end_time = context_parser(context, "game_id", "start_time", "end_time") if not check_single_player_mode(game_id): _, end_time = get_time_defaults(game_id, start_time, end_time) log_winners(game_id, end_time)
def update_field_chart_with_context(**context): game_id, start_time, end_time = context_parser(context, "game_id", "start_time", "end_time") start_time, end_time = get_time_defaults(game_id, start_time, end_time) make_the_field_charts(game_id, start_time, end_time)
def make_leaderboard_with_context(**context): game_id, start_time, end_time = context_parser(context, "game_id", "start_time", "end_time") start_time, end_time = get_time_defaults(game_id, start_time, end_time) compile_and_pack_player_leaderboard(game_id, start_time, end_time)
def make_metrics_with_context(**context): game_id, start_time, end_time = context_parser(context, "game_id", "start_time", "end_time") start_time, end_time = get_time_defaults(game_id, start_time, end_time) calculate_and_pack_game_metrics(game_id, start_time, end_time)
def portfolio_value_by_day(game_id: int, user_id: int, start_time: float, end_time: float) -> pd.DataFrame: start_time, end_time = get_time_defaults(game_id, start_time, end_time) df = make_historical_balances_and_prices_table(game_id, user_id) df = df[(df["timestamp"] >= posix_to_datetime(start_time)) & (df["timestamp"] <= posix_to_datetime(end_time))] df = df.groupby(["symbol", "timestamp"], as_index=False)["value"].agg("last") return df.groupby("timestamp", as_index=False)["value"].sum()