update time filtering
This commit is contained in:
+38
-17
@@ -2,19 +2,30 @@ from database import execute
|
|||||||
from database import fetch_all, fetch_one
|
from database import fetch_all, fetch_one
|
||||||
|
|
||||||
|
|
||||||
def get_user_events(user_id):
|
def get_user_events(user_id, date_from=None, date_to=None):
|
||||||
|
|
||||||
query = """
|
query = """
|
||||||
SELECT events.*
|
SELECT events.*
|
||||||
FROM events
|
FROM events
|
||||||
JOIN room_members
|
JOIN room_members
|
||||||
ON events.room_id = room_members.room_id
|
ON events.room_id = room_members.room_id
|
||||||
WHERE room_members.user_id = ?
|
WHERE room_members.user_id = ?
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
params = [user_id]
|
||||||
|
|
||||||
|
if date_from:
|
||||||
|
query += " AND events.start_time >= ?"
|
||||||
|
params.append(date_from)
|
||||||
|
|
||||||
|
if date_to:
|
||||||
|
query += " AND events.start_time <= ?"
|
||||||
|
params.append(date_to)
|
||||||
|
|
||||||
|
query += " ORDER BY events.start_time"
|
||||||
|
|
||||||
return fetch_all(
|
return fetch_all(
|
||||||
query,
|
query,
|
||||||
(user_id,)
|
tuple(params),
|
||||||
)
|
)
|
||||||
|
|
||||||
def create_event(
|
def create_event(
|
||||||
@@ -166,19 +177,29 @@ def update_event(
|
|||||||
event_id,
|
event_id,
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
|
|
||||||
def get_room_events(room_id):
|
|
||||||
|
|
||||||
from database import fetch_all
|
def get_room_events(room_id, date_from=None, date_to=None):
|
||||||
|
query = """
|
||||||
return fetch_all(
|
|
||||||
"""
|
|
||||||
SELECT *
|
SELECT *
|
||||||
FROM events
|
FROM events
|
||||||
WHERE room_id = ?
|
WHERE room_id = ?
|
||||||
ORDER BY start_time
|
"""
|
||||||
""",
|
|
||||||
(room_id,)
|
params = [room_id]
|
||||||
|
|
||||||
|
if date_from:
|
||||||
|
query += " AND start_time >= ?"
|
||||||
|
params.append(date_from)
|
||||||
|
|
||||||
|
if date_to:
|
||||||
|
query += " AND start_time <= ?"
|
||||||
|
params.append(date_to)
|
||||||
|
|
||||||
|
query += " ORDER BY start_time"
|
||||||
|
|
||||||
|
return fetch_all(
|
||||||
|
query,
|
||||||
|
tuple(params),
|
||||||
)
|
)
|
||||||
|
|
||||||
def get_event(event_id):
|
def get_event(event_id):
|
||||||
|
|||||||
+33
-6
@@ -608,10 +608,21 @@ def delete_room(
|
|||||||
@app.get(
|
@app.get(
|
||||||
"/rooms/{room_id}/events",
|
"/rooms/{room_id}/events",
|
||||||
summary="Get room events",
|
summary="Get room events",
|
||||||
description="Returns all events belonging to a room. The authenticated user must be a member.",
|
description="Returns events belonging to a room, optionally filtered by date.",
|
||||||
)
|
)
|
||||||
|
|
||||||
def api_room_events(
|
def api_room_events(
|
||||||
room_id: int,
|
room_id: int,
|
||||||
|
date_from: str | None = Query(
|
||||||
|
None,
|
||||||
|
alias="from",
|
||||||
|
description="Only return events starting on or after this date.",
|
||||||
|
),
|
||||||
|
date_to: str | None = Query(
|
||||||
|
None,
|
||||||
|
alias="to",
|
||||||
|
description="Only return events starting on or before this date.",
|
||||||
|
),
|
||||||
user_id: int = Depends(get_current_user),
|
user_id: int = Depends(get_current_user),
|
||||||
):
|
):
|
||||||
if not has_role(room_id, user_id, "member"):
|
if not has_role(room_id, user_id, "member"):
|
||||||
@@ -620,13 +631,16 @@ def api_room_events(
|
|||||||
detail="room member permission required",
|
detail="room member permission required",
|
||||||
)
|
)
|
||||||
|
|
||||||
events = get_room_events(room_id)
|
events = get_room_events(
|
||||||
|
room_id,
|
||||||
|
date_from,
|
||||||
|
date_to,
|
||||||
|
)
|
||||||
|
|
||||||
return {
|
return {
|
||||||
"events": [dict(event) for event in events],
|
"events": [dict(event) for event in events],
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@app.post(
|
@app.post(
|
||||||
"/events",
|
"/events",
|
||||||
summary="Create an event",
|
summary="Create an event",
|
||||||
@@ -660,16 +674,29 @@ def api_create_event(
|
|||||||
"event_id": event_id,
|
"event_id": event_id,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@app.get(
|
@app.get(
|
||||||
"/events",
|
"/events",
|
||||||
summary="Get user's events",
|
summary="Get user's events",
|
||||||
description="Returns events from rooms the authenticated user belongs to.",
|
description="Returns events from rooms the authenticated user belongs to, optionally filtered by date.",
|
||||||
)
|
)
|
||||||
def get_events(
|
def get_events(
|
||||||
|
date_from: str | None = Query(
|
||||||
|
None,
|
||||||
|
alias="from",
|
||||||
|
description="Only return events starting on or after this date.",
|
||||||
|
),
|
||||||
|
date_to: str | None = Query(
|
||||||
|
None,
|
||||||
|
alias="to",
|
||||||
|
description="Only return events starting on or before this date.",
|
||||||
|
),
|
||||||
user_id: int = Depends(get_current_user),
|
user_id: int = Depends(get_current_user),
|
||||||
):
|
):
|
||||||
events = get_user_events(user_id)
|
events = get_user_events(
|
||||||
|
user_id,
|
||||||
|
date_from,
|
||||||
|
date_to,
|
||||||
|
)
|
||||||
|
|
||||||
return {
|
return {
|
||||||
"events": [dict(event) for event in events],
|
"events": [dict(event) for event in events],
|
||||||
|
|||||||
Reference in New Issue
Block a user