rm db / updates main.py rooms.py
This commit is contained in:
+34
-2
@@ -3,7 +3,7 @@ from pydantic import BaseModel
|
|||||||
|
|
||||||
from database import fetch_all, fetch_one
|
from database import fetch_all, fetch_one
|
||||||
from auth import create_user, verify_user, create_token, get_current_user
|
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 permissions import has_role
|
||||||
from events import create_event, get_user_events, check_event_threshold
|
from events import create_event, get_user_events, check_event_threshold
|
||||||
|
|
||||||
@@ -18,6 +18,9 @@ class Login(BaseModel):
|
|||||||
username: str
|
username: str
|
||||||
password: str
|
password: str
|
||||||
|
|
||||||
|
class GetRooms(BaseModel):
|
||||||
|
user_id: str
|
||||||
|
|
||||||
|
|
||||||
class UserCreate(BaseModel):
|
class UserCreate(BaseModel):
|
||||||
username: str
|
username: str
|
||||||
@@ -191,7 +194,7 @@ def api_create_room(
|
|||||||
except sqlite3.IntegrityError:
|
except sqlite3.IntegrityError:
|
||||||
raise HTTPException(
|
raise HTTPException(
|
||||||
status_code=409,
|
status_code=409,
|
||||||
detail="invite_code already exists"
|
detail="invite_code or roomname already exists"
|
||||||
)
|
)
|
||||||
|
|
||||||
return {
|
return {
|
||||||
@@ -356,6 +359,35 @@ def respond_event(
|
|||||||
"going": count_confirmations(event_id)
|
"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()
|
||||||
print("YOU CAN NOT START THE SERVER WITH PYTHON")
|
print("YOU CAN NOT START THE SERVER WITH PYTHON")
|
||||||
print("start with:")
|
print("start with:")
|
||||||
|
|||||||
+94
-2
@@ -1,6 +1,6 @@
|
|||||||
from fastapi import FastAPI
|
from fastapi import FastAPI
|
||||||
from pydantic import BaseModel
|
from pydantic import BaseModel
|
||||||
from database import execute, fetch_one
|
from database import execute, fetch_one, fetch_all
|
||||||
|
|
||||||
DEFAULT_ROLE = "member"
|
DEFAULT_ROLE = "member"
|
||||||
|
|
||||||
@@ -109,4 +109,96 @@ def accept_room(user_id, invite_code):
|
|||||||
return {
|
return {
|
||||||
"room_id": room_id,
|
"room_id": room_id,
|
||||||
"member_id": member_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
@@ -22,7 +22,7 @@ CREATE TABLE IF NOT EXISTS users (
|
|||||||
cur.execute("""
|
cur.execute("""
|
||||||
CREATE TABLE IF NOT EXISTS rooms (
|
CREATE TABLE IF NOT EXISTS rooms (
|
||||||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||||
name TEXT NOT NULL,
|
name TEXT NOT NULL UNIQUE,
|
||||||
owner_id INTEGER NOT NULL,
|
owner_id INTEGER NOT NULL,
|
||||||
invite_code TEXT NOT NULL UNIQUE,
|
invite_code TEXT NOT NULL UNIQUE,
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user