Files
calendar/backend/rooms.py
T

112 lines
1.8 KiB
Python

from fastapi import FastAPI
from pydantic import BaseModel
from database import execute, fetch_one
DEFAULT_ROLE = "member"
def create_room(user_id, room_name, invite_code):
room_id = execute(
"""
INSERT INTO rooms (name, owner_id, invite_code)
VALUES (?, ?, ?)
""",
(
room_name,
user_id,
invite_code
)
)
member_id = execute(
"""
INSERT INTO room_members (room_id, user_id, role)
VALUES (?, ?, ?)
""",
(
room_id,
user_id,
"owner"
)
)
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"]
existing = fetch_one(
"""
SELECT *
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
}