meerdere updates

This commit is contained in:
ben
2026-08-03 17:45:56 +02:00
parent cff9aa0dd1
commit e4ae4bc9d5
6 changed files with 205 additions and 24 deletions
+76 -16
View File
@@ -2,10 +2,15 @@ from fastapi import FastAPI, Depends
from pydantic import BaseModel
from database import fetch_all, fetch_one
from events import create_event
from events import create_event, get_user_events
from auth import create_user, verify_user, create_token, get_current_user
from rooms import create_room, search_room, accept_room
from permissions import has_role
from events import create_event, get_user_events, check_event_threshold
from fastapi import HTTPException
import sqlite3
from typing import Literal
class Login(BaseModel):
username: str
@@ -118,6 +123,42 @@ def get_me(
# rooms
@app.delete("/room/{room_id}")
def delete_room(
room_id: int,
user_id: int = Depends(get_current_user)
):
if not has_role(
room_id,
user_id,
["owner", "admin"]
):
return {
"status": "denied",
"reason": "no_permission"
}
return {
"status": "deleted"
}
# @app.post("/create-room")
# def api_create_room(
# room: RoomCreate,
# user_id: int = Depends(get_current_user)
# ):
# room_id = create_room(
# user_id,
# room.room_name,
# room.invite_code
# )
# return {
# "status": "created",
# **room_id
# }
@app.post("/create-room")
def api_create_room(
@@ -125,18 +166,24 @@ def api_create_room(
user_id: int = Depends(get_current_user)
):
room_id = create_room(
room.room_name,
user_id,
room.invite_code
)
try:
room_id = create_room(
user_id,
room.room_name,
room.invite_code
)
except sqlite3.IntegrityError:
raise HTTPException(
status_code=409,
detail="invite_code already exists"
)
return {
"status": "created",
"room_id": room_id
}
@app.post("/search-room")
def api_search_room(
room: RoomSearch
@@ -188,7 +235,6 @@ def api_create_event(
user_id: int = Depends(get_current_user)
):
# check of gebruiker lid is
member = fetch_one(
"""
SELECT *
@@ -233,15 +279,29 @@ def get_events(
user_id: int = Depends(get_current_user)
):
events = fetch_all(
"""
SELECT *
FROM events
WHERE creator_id = ?
""",
(user_id,)
)
events = get_user_events(user_id)
return {
"events": [dict(event) for event in events]
}
@app.post("/events/{event_id}/respond")
def respond_event(
event_id: int,
status: Literal["going", "maybe", "declined"],
user_id: int = Depends(get_current_user)
):
respond_to_event(
event_id,
user_id,
status
)
check_event_threshold(event_id)
return {
"status": "response_saved",
"going": count_confirmations(event_id)
}