From eab19822f14115d078d978641429d2d14eb9d2b5 Mon Sep 17 00:00:00 2001 From: Mawoka Date: Thu, 3 Mar 2022 21:33:22 +0100 Subject: [PATCH] :zap: Added ttl to game(sessions) --- classquiz/routers/quiz.py | 2 +- classquiz/socket_server/__init__.py | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/classquiz/routers/quiz.py b/classquiz/routers/quiz.py index 7beb3fc..54d8169 100644 --- a/classquiz/routers/quiz.py +++ b/classquiz/routers/quiz.py @@ -49,7 +49,7 @@ async def start_quiz(quiz_id: str, user: User = Depends(get_current_user)): game_pin = randint(10000000, 99999999) game = PlayGame(quiz_id=quiz_id, game_pin=str(game_pin), questions=quiz.questions, game_id=uuid.uuid4(), title=quiz.title, description=quiz.description) - await redis.set(f"game:{str(game.game_pin)}", (game.json())) + await redis.set(f"game:{str(game.game_pin)}", (game.json()), ex=18000) return {**quiz.dict(exclude={"id"}), **game.dict(exclude={"questions"})} diff --git a/classquiz/socket_server/__init__.py b/classquiz/socket_server/__init__.py index 4b41a07..a4a66b3 100644 --- a/classquiz/socket_server/__init__.py +++ b/classquiz/socket_server/__init__.py @@ -43,7 +43,7 @@ async def join_game(sid, data): redis_res["players"].append({"username": data["username"], "sid": sid}) await redis.set(f"game_session:{data['game_pin']}", json.dumps({"admin": redis_res["admin"], "game_id": redis_res["game_id"], - "players": redis_res["players"], "answers": []})) + "players": redis_res["players"], "answers": []}), ex=18000) await sio.emit("player_joined", {"username": data["username"], "sid": sid}, room=redis_res["admin"]) sio.enter_room(sid, data["game_pin"]) # TODO: make more secure @@ -62,7 +62,7 @@ async def register_as_admin(sid, data): game_pin = data["game_pin"] game_id = data["game_id"] if (await redis.get(f"game_session:{game_pin}")) is None: - await redis.set(f"game_session:{game_pin}", json.dumps({"admin": sid, "game_id": game_id, "players": []})) + await redis.set(f"game_session:{game_pin}", json.dumps({"admin": sid, "game_id": game_id, "players": []}), ex=18000) await sio.emit("registered_as_admin", {"game_id": game_id, "game": await redis.get(f"game:{data['game_pin']}")}, room=sid) @@ -107,11 +107,11 @@ async def submit_answer(sid, data): if answers is None: await redis.set(f"game_session:{session['game_pin']}:{data['question_index']}", json.dumps( - [{"username": session["username"], "answer": data["answer"], "right": answer_right}])) + [{"username": session["username"], "answer": data["answer"], "right": answer_right}]), ex=18000) else: answers = json.loads(answers) answers.append({"username": session["username"], "answer": data["answer"], "right": answer_right}) - await redis.set(f"game_session:{session['game_pin']}:{data['question_index']}", json.dumps(answers)) + await redis.set(f"game_session:{session['game_pin']}:{data['question_index']}", json.dumps(answers), ex=18000) # await redis.set(f"game_data:{session['game_pin']}", json.dumps(data))