import { Router } from "express"; import { GiftService } from "../../modules/gifts/service"; import { validateBody } from "../../core/middleware/validate"; import { createGiftSchema, createContributionSchema } from "../../modules/gifts/types"; import { requireAuth } from "../../core/middleware/auth"; const service = new GiftService(); export function registerGiftRoutes(router: Router) { const r = Router(); // Protected routes r.use(requireAuth); r.post("/gift", validateBody(createGiftSchema), async (req, res) => { const ownerId = (req as any).user?.id; const gift = await service.createGift({ ...req.body, ownerId }); res.json(gift); }); r.get("/gift", async (_req, res) => { const gifts = await service.listGifts(); res.json(gifts); }); r.get("/gift/:id", async (req, res) => { const requesterId = (req as any).user?.id; const gift = await service.getGiftById(req.params.id, requesterId); if (!gift) { return res.status(404).json({ error: "Gift not found" }); } res.json(gift); }); r.post( "/gift/contribution", validateBody(createContributionSchema), async (req, res) => { const contribution = await service.createContribution(req.body); res.json(contribution); }, ); r.get("/gift/:id/contributions", async (req, res) => { const requesterId = (req as any).user?.id; const contributions = await service.listContributions(req.params.id, requesterId); res.json(contributions); }); router.use(r); }