diff --git a/backend/main.py b/backend/main.py index 416cbf6..e358ea7 100644 --- a/backend/main.py +++ b/backend/main.py @@ -16,6 +16,10 @@ from typing import Literal from fastapi.middleware.cors import CORSMiddleware from events import delete_event, get_room_events +from rooms import regenerate_invite_code + +class InviteCodeUpdate(BaseModel): + invite_code: str class Login(BaseModel): username: str @@ -262,6 +266,23 @@ def api_join_room( **result } +@app.post("/rooms/{room_id}/invite-code") +def update_invite_code( + room_id: int, + data: InviteCodeUpdate, + user_id: int = Depends(get_current_user) +): + if not has_role(room_id, user_id, ["owner", "admin"]): + return { + "status": "denied", + "reason": "no_permission" + } + + return regenerate_invite_code( + room_id, + data.invite_code + ) + # events @app.post("/events") diff --git a/backend/rooms.py b/backend/rooms.py index 5ac790b..8dc00e4 100644 --- a/backend/rooms.py +++ b/backend/rooms.py @@ -278,4 +278,23 @@ def change_room_name(room_id, new_name, user_id): "new_name": new_name, "room_id": room_id, "updated_by": user_id + } + +def regenerate_invite_code(room_id, new_code): + execute( + """ + UPDATE rooms + SET invite_code = ? + WHERE id = ? + """, + ( + new_code, + room_id + ) + ) + + return { + "status": "updated", + "room_id": room_id, + "invite_code": new_code } \ No newline at end of file