rm db / updates main.py rooms.py

This commit is contained in:
ben
2026-08-04 10:11:46 +02:00
parent 64803eb343
commit d2bd05c660
4 changed files with 129 additions and 5 deletions
+34 -2
View File
@@ -3,7 +3,7 @@ from pydantic import BaseModel
from database import fetch_all, fetch_one
from auth import create_user, verify_user, create_token, get_current_user
from rooms import create_room, search_room, accept_room
from rooms import create_room, search_room, accept_room, get_rooms, delete_room, get_room
from permissions import has_role
from events import create_event, get_user_events, check_event_threshold
@@ -18,6 +18,9 @@ class Login(BaseModel):
username: str
password: str
class GetRooms(BaseModel):
user_id: str
class UserCreate(BaseModel):
username: str
@@ -191,7 +194,7 @@ def api_create_room(
except sqlite3.IntegrityError:
raise HTTPException(
status_code=409,
detail="invite_code already exists"
detail="invite_code or roomname already exists"
)
return {
@@ -356,6 +359,35 @@ def respond_event(
"going": count_confirmations(event_id)
}
@app.get("/part_of_rooms")
def get_the_rooms(
user_id: int = Depends(get_current_user)
):
rooms = get_rooms(user_id)
return {
"rooms": [dict(room) for room in rooms]
}
@app.get("/rooms/{room_id}")
def api_get_room(
room_id: int,
user_id: int = Depends(get_current_user)
):
room = get_room(
room_id,
user_id
)
if room is None:
raise HTTPException(
status_code=404,
detail="room not found or no permission"
)
return room
print()
print("YOU CAN NOT START THE SERVER WITH PYTHON")
print("start with:")
+94 -2
View File
@@ -1,6 +1,6 @@
from fastapi import FastAPI
from pydantic import BaseModel
from database import execute, fetch_one
from database import execute, fetch_one, fetch_all
DEFAULT_ROLE = "member"
@@ -109,4 +109,96 @@ def accept_room(user_id, invite_code):
return {
"room_id": room_id,
"member_id": member_id
}
}
def get_rooms(user_id):
query = """
SELECT
rooms.id,
rooms.name,
rooms.owner_id,
rooms.invite_code,
room_members.role
FROM rooms
JOIN room_members
ON rooms.id = room_members.room_id
WHERE room_members.user_id = ?
"""
rooms = fetch_all(
query,
(
user_id,
)
)
return rooms
def delete_room(room_id):
execute(
"""
DELETE FROM rooms
WHERE id = ?
""",
(room_id,)
)
return {"status":"deleted"}
def get_room(room_id, user_id):
room = fetch_one(
"""
SELECT
rooms.id,
rooms.name,
rooms.owner_id,
room_members.role
FROM rooms
JOIN room_members
ON rooms.id = room_members.room_id
WHERE rooms.id = ?
AND room_members.user_id = ?
""",
(
room_id,
user_id
)
)
if room is None:
return None
members = fetch_all(
"""
SELECT
users.id,
users.username,
room_members.role
FROM room_members
JOIN users
ON users.id = room_members.user_id
WHERE room_members.room_id = ?
""",
(room_id,)
)
events = fetch_all(
"""
SELECT *
FROM events
WHERE room_id = ?
ORDER BY start_time
""",
(room_id,)
)
return {
"room": dict(room),
"members": [dict(member) for member in members],
"events": [dict(event) for event in events]
}
Binary file not shown.
+1 -1
View File
@@ -22,7 +22,7 @@ CREATE TABLE IF NOT EXISTS users (
cur.execute("""
CREATE TABLE IF NOT EXISTS rooms (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT NOT NULL,
name TEXT NOT NULL UNIQUE,
owner_id INTEGER NOT NULL,
invite_code TEXT NOT NULL UNIQUE,