def get_active_game(user: u.User) -> GameModel or None: if user.cached_game is not None: return user.cached_game with db.connect() as conn, conn.cursor() as cursor: cursor.execute(f""" SELECT game FROM players WHERE user = {user.id} ORDER BY id DESC LIMIT 1; """) result = cursor.fetchone() if result is None: return None game = get_by_id(result[0]) if game is None: return None user.cached_game = game if game.can_play else None return user.cached_game