update time filtering
This commit is contained in:
+33
-12
@@ -2,8 +2,7 @@ from database import execute
|
||||
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 = """
|
||||
SELECT events.*
|
||||
FROM events
|
||||
@@ -12,9 +11,21 @@ def get_user_events(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(
|
||||
query,
|
||||
(user_id,)
|
||||
tuple(params),
|
||||
)
|
||||
|
||||
def create_event(
|
||||
@@ -167,18 +178,28 @@ def update_event(
|
||||
),
|
||||
)
|
||||
|
||||
def get_room_events(room_id):
|
||||
|
||||
from database import fetch_all
|
||||
|
||||
return fetch_all(
|
||||
"""
|
||||
def get_room_events(room_id, date_from=None, date_to=None):
|
||||
query = """
|
||||
SELECT *
|
||||
FROM events
|
||||
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):
|
||||
|
||||
+33
-6
@@ -608,10 +608,21 @@ def delete_room(
|
||||
@app.get(
|
||||
"/rooms/{room_id}/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(
|
||||
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),
|
||||
):
|
||||
if not has_role(room_id, user_id, "member"):
|
||||
@@ -620,13 +631,16 @@ def api_room_events(
|
||||
detail="room member permission required",
|
||||
)
|
||||
|
||||
events = get_room_events(room_id)
|
||||
events = get_room_events(
|
||||
room_id,
|
||||
date_from,
|
||||
date_to,
|
||||
)
|
||||
|
||||
return {
|
||||
"events": [dict(event) for event in events],
|
||||
}
|
||||
|
||||
|
||||
@app.post(
|
||||
"/events",
|
||||
summary="Create an event",
|
||||
@@ -660,16 +674,29 @@ def api_create_event(
|
||||
"event_id": event_id,
|
||||
}
|
||||
|
||||
|
||||
@app.get(
|
||||
"/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(
|
||||
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),
|
||||
):
|
||||
events = get_user_events(user_id)
|
||||
events = get_user_events(
|
||||
user_id,
|
||||
date_from,
|
||||
date_to,
|
||||
)
|
||||
|
||||
return {
|
||||
"events": [dict(event) for event in events],
|
||||
|
||||
Reference in New Issue
Block a user