37 lines
1.0 KiB
TypeScript
37 lines
1.0 KiB
TypeScript
import { Router } from "express";
|
|
import { GuestService } from "../../../modules/guests/service";
|
|
import { validateBody } from "../../../core/middleware/validate";
|
|
import { createGuestSchema, updateRsvpSchema } from "../../../modules/guests/types";
|
|
|
|
const service = new GuestService();
|
|
|
|
export function registerGuestRoutes(router: Router) {
|
|
const r = Router();
|
|
|
|
// Admin can manage guests (same endpoints, can be extended with extra checks)
|
|
|
|
r.post("/guest", validateBody(createGuestSchema), async (req, res) => {
|
|
const guest = await service.createGuest(req.body);
|
|
res.json(guest);
|
|
});
|
|
|
|
r.get("/guest", async (_req, res) => {
|
|
const guests = await service.listGuests();
|
|
res.json(guests);
|
|
});
|
|
|
|
r.patch(
|
|
"/guest/:id/rsvp",
|
|
validateBody(updateRsvpSchema),
|
|
async (req, res) => {
|
|
const updated = await service.updateRsvp(req.params.id, req.body);
|
|
if (!updated) {
|
|
return res.status(404).json({ error: "Guest not found" });
|
|
}
|
|
res.json(updated);
|
|
},
|
|
);
|
|
|
|
router.use(r);
|
|
}
|