def construct_latest_game_state(round: int) -> Optional[models.GameState]: """Get game state from latest teamtasks from redis stream""" teamtasks = storage.tasks.get_last_teamtasks() teamtasks = storage.tasks.filter_teamtasks_for_participants(teamtasks) round_start = get_round_start(round) state = models.GameState(round_start=round_start, round=round, team_tasks=teamtasks) return state
def construct_game_state_from_db(round: int) -> Optional[models.GameState]: """Get game state for specified round with teamtasks from db""" teamtasks = storage.tasks.get_teamtasks_from_db() teamtasks = storage.tasks.filter_teamtasks_for_participants(teamtasks) round_start = get_round_start(round) state = models.GameState(round_start=round_start, round=round, team_tasks=teamtasks) return state
def get_game_state(round: Optional[int] = None) -> Optional[models.GameState]: """Get game state for current round :param round: specify round to query manually. Otherwise, it'll be taken from cache """ if round is None: round = get_current_round() if not round: return None team_tasks = storage.tasks.get_teamtasks_for_participants(round) if not team_tasks: return None state = models.GameState(round=round, team_tasks=team_tasks) return state