diff --git a/functions/api/events-team/events/list.ts b/functions/api/events-team/events/list.ts new file mode 100644 index 0000000..9c817b5 --- /dev/null +++ b/functions/api/events-team/events/list.ts @@ -0,0 +1,26 @@ +import { jsonError, jsonResponse } from "../../../common.js"; + +export async function onRequestGet(context: RequestContext) { + const url = new URL(context.request.url); + const month = parseInt(url.searchParams.get("month") ?? ""); + const year = parseInt(url.searchParams.get("year") ?? ""); + + if (isNaN(month) || isNaN(year)) + return jsonError("Invalid month or year", 400); + + const currentYear = new Date().getUTCFullYear(); + const currentMonth = new Date().getUTCMonth() + 1; + + if (currentYear < year || (currentYear === year && currentMonth < month)) + return jsonError("Cannot get events for a time in the future", 400); + + const eventRecords = await context.env.D1.prepare( + "SELECT answer, approved, created_by, day, details, month, pending, performed_at, type, year FROM events WHERE month = ? AND year = ? ORDER BY day ASC;", + ) + .bind(month, year) + .all(); + + if (!eventRecords.success) return jsonError("Failed to retrieve events", 400); + + return jsonResponse(JSON.stringify(eventRecords.results)); +}