from fastapi import FastAPI from pydantic import BaseModel from database import execute, fetch_one DEFAULT_ROLE = "member" def create_room( room_name, creator_id, invite_code ): query = """ INSERT INTO "main"."rooms" ("name", "owner_id", "invite_code") VALUES (?, ?, ?); """ room_id = execute( query, ( room_name, creator_id, invite_code ) ) query2 = """ SELECT id FROM rooms WHERE invite_code = ? """ room = fetch_one( query2, ( invite_code, ) ) if room is None: return None room_id = room["id"] role = DEFAULT_ROLE query3 = """ INSERT INTO "main"."room_members" ("room_id", "user_id", "role") VALUES (?, ?, ?); """ member_id = execute( query3, ( room_id, creator_id, role ) ) return { "room_id": room_id, "member_id": member_id } def search_room( invite_code ): query = """ SELECT name FROM rooms WHERE invite_code = ? """ room = fetch_one( query, ( invite_code, ) ) if room is None: return None return room["name"] def accept_room(user_id, invite_code): query = """ SELECT id FROM rooms WHERE invite_code = ? """ room = fetch_one( query, (invite_code,) ) if room is None: return None room_id = room["id"] # check dubbele join existing = fetch_one( """ SELECT id FROM room_members WHERE room_id = ? AND user_id = ? """, ( room_id, user_id ) ) if existing: return None query = """ INSERT INTO room_members (room_id, user_id, role) VALUES (?, ?, ?) """ member_id = execute( query, ( room_id, user_id, "member" ) ) return { "room_id": room_id, "member_id": member_id }