Files
calendar/backend/events.py
T
2026-08-17 17:33:23 +02:00

239 lines
4.1 KiB
Python

from database import execute
from database import fetch_all, fetch_one
def get_user_events(user_id):
query = """
SELECT events.*
FROM events
JOIN room_members
ON events.room_id = room_members.room_id
WHERE room_members.user_id = ?
"""
return fetch_all(
query,
(user_id,)
)
def create_event(
room_id,
creator_id,
type,
title,
description,
start_time,
end_time,
visibility,
status,
min_people
):
query = """
INSERT INTO events (
room_id,
creator_id,
type,
title,
description,
start_time,
end_time,
visibility,
status,
min_people
)
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
"""
event_id = execute(
query,
(
room_id,
creator_id,
type,
title,
description,
start_time,
end_time,
visibility,
status,
min_people
)
)
return event_id
# voorbeeld create_event. alleen voor deocumentatie,
# als je echt een event toe wil voegen, moet je data
# uit de fastapi halen.
#
#
# event = create_event(
# room_id=2,
# creator_id=3,
# type="proposal",
# title="Kaas eten",
# description="We gaan met z'n allen kaas eten.",
# start_time="2026-08-10 19:00",
# end_time="2026-08-10 21:00",
# visibility="room",
# status="proposed",
# min_people=4
# )
# print("Nieuw event ID:", event)
def check_event_threshold(event_id):
query = """
SELECT
events.min_people,
COUNT(event_signups.user_id) AS going
FROM events
LEFT JOIN event_signups
ON events.id = event_signups.event_id
AND event_signups.status = 'going'
WHERE events.id = ?
GROUP BY events.id
"""
event = fetch_one(
query,
(event_id,)
)
if event["going"] >= event["min_people"]:
execute(
"""
UPDATE events
SET status = 'confirmed'
WHERE id = ?
""",
(event_id,)
)
def delete_event(event_id):
from database import execute
execute(
"""
DELETE FROM events
WHERE id = ?
""",
(event_id,)
)
def update_event(
event_id,
title,
description,
start_time,
end_time,
min_people
):
from database import execute
execute(
"""
UPDATE events
SET
title = COALESCE(?, title),
description = COALESCE(?, description),
start_time = COALESCE(?, start_time),
end_time = COALESCE(?, end_time),
min_people = COALESCE(?, min_people)
WHERE id = ?
""",
(
title,
description,
start_time,
end_time,
min_people,
event_id
)
)
def get_room_events(room_id):
from database import fetch_all
return fetch_all(
"""
SELECT *
FROM events
WHERE room_id = ?
ORDER BY start_time
""",
(room_id,)
)
def get_event(event_id):
return fetch_one(
"""
SELECT *
FROM events
WHERE id = ?
""",
(event_id,)
)
def get_event_room_id(event_id):
event = fetch_one(
"""
SELECT room_id
FROM events
WHERE id = ?
""",
(event_id,)
)
if event is None:
return None
return event["room_id"]
def get_event_creator(event_id):
event = fetch_one(
"""
SELECT creator_id
FROM events
WHERE id = ?
""",
(event_id,)
)
if event is None:
return None
return event["creator_id"]
def confirm_event(event_id):
execute(
"""
UPDATE events
SET status = 'confirmed'
WHERE id = ?
""",
(event_id,),
)
def cancel_event(event_id):
execute(
"""
UPDATE events
SET status = 'cancelled'
WHERE id = ?
""",
(event_id,),
)