ghostguild-org/server/api/events/[id]/waitlist.delete.js
Jennie Robinson Faber 025c1a180f Add Zod validation to all API endpoints and remove debug test route
Adds schema-based input validation across helcim, events, members,
series, admin, and updates API endpoints. Removes the peer-support
debug test endpoint. Adds validation test coverage.
2026-03-01 17:04:26 +00:00

52 lines
1.3 KiB
JavaScript

import Event from "../../../models/event";
export default defineEventHandler(async (event) => {
const id = getRouterParam(event, "id");
const body = await validateBody(event, waitlistDeleteSchema);
const { email } = body;
try {
// Find event by ID or slug
const eventData = await Event.findOne({
$or: [{ _id: id }, { slug: id }],
});
if (!eventData) {
throw createError({
statusCode: 404,
statusMessage: "Event not found",
});
}
// Find and remove from waitlist
const waitlistIndex = eventData.tickets?.waitlist?.entries?.findIndex(
(entry) => entry.email.toLowerCase() === email.toLowerCase()
);
if (waitlistIndex === -1 || waitlistIndex === undefined) {
throw createError({
statusCode: 404,
statusMessage: "You are not on the waitlist for this event",
});
}
eventData.tickets.waitlist.entries.splice(waitlistIndex, 1);
await eventData.save();
return {
success: true,
message: "You have been removed from the waitlist",
};
} catch (error) {
if (error.statusCode) {
throw error;
}
console.error("Error leaving waitlist:", error);
throw createError({
statusCode: 500,
statusMessage: "Failed to leave waitlist",
});
}
});