def find_player(name: str) -> Player: session = session_factory.create_session() player = session.query(Player).filter(Player.name == name).first() session.close() return player
def find_roll(name: str) -> Optional['Roll']: session = session_factory.create_session() roll = session.query(Roll).filter(Roll.name == name).first() session.close() return roll
def all_rolls() -> List[Roll]: session = session_factory.create_session() query = session.query(Roll).order_by(Roll.name).all() rolls = list(query) session.close() return rolls
def init_rolls(rolls: List[str]): session = session_factory.create_session() roll_count = session.query(Roll).count() session.close() if roll_count: return for roll_name in rolls: create_roll(roll_name)
def create_roll(name: str) -> 'Roll': session = session_factory.create_session() roll = Roll() roll.name = name session.add(roll) session.commit() session.close() return find_roll(name)
def get_win_count(player: Player) -> int: session = session_factory.create_session() wins = session.query(Move) \ .filter(Move.player_id == player.id). \ filter(Move.is_winning_play) \ .count() session.close() return wins
def get_game_history(game_id: str) -> List[Move]: session = session_factory.create_session() query = session.query(Move) \ .filter(Move.game_id == game_id) \ .order_by(Move.roll_number) \ .all() moves = list(query) session.close() return moves
def get_game_history(game_id: str) -> List[Guess]: session = session_factory.create_session() query = session.query(Guess)\ .filter(Guess.game_id == game_id)\ .order_by(Guess.guess_count)\ .all() guesses = list(query) session.close() return guesses
def record_roll(player, roll: 'Roll', game_id: str, is_winning_play: bool, roll_num: int): session = session_factory.create_session() move = Move() move.player_id = player.id move.roll_id = roll.id move.game_id = game_id move.is_winning_play = is_winning_play move.roll_number = roll_num session.add(move) session.commit() session.close()
def create_player(name: str) -> Player: session = session_factory.create_session() player = session.query(Player).filter(Player.name == name).first() if player: raise Exception("Player already exists") player = Player() player.name = name session.add(player) session.commit() session.close() player = session.query(Player).filter(Player.name == name).first() return player
def record_guess(player: Player, guess_number: int, game_id: str, is_correct_guess: bool, is_hi: bool, guess_count: int, the_number: int): session = session_factory.create_session() guess = Guess() guess.player_id = player.id guess.guess = guess_number guess.game_id = game_id guess.is_correct_guess = is_correct_guess guess.is_hi = is_hi guess.guess_count = guess_count guess.the_number = the_number session.add(guess) session.commit() session.close()
def get_player_five_high_scores(player: Player.id) -> List: session = session_factory.create_session() high_scores = [] query = session.query(Guess)\ .filter(Guess.player_id == player)\ .filter(Guess.is_correct_guess)\ .order_by(Guess.guess_count)\ .all() high_score = list(query) for item in high_score: high_scores.append(item.guess_count) high_scores.sort() session.close() return high_scores[:5]
def all_players() -> List[Player]: session = session_factory.create_session() players = list(session.query(Player).all()) session.close() return players
def find_roll_by_id(roll_id): session = session_factory.create_session() roll = session.query(Roll).filter(Roll.id == roll_id).first() session.close() return roll
def find_player_by_id(player_id: int) -> Player: session = session_factory.create_session() player = session.query(Player).filter(Player.id == player_id).first() session.close() return player