218 lines
3.8 KiB
Python
218 lines
3.8 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"] |