import { wrapAsyncHandler } from "@batch-cooking/express-tools"; import { listContactMessagesQuerySchema } from "@batch-cooking/shared"; import { Router } from "express"; import { requireAdmin } from "../../middlewares/require-admin.js"; import { listContactMessages } from "./admin-contact.service.js"; /** * Router mounted at `/admin/api/contact` (via `admin.routes.ts`) — behind * {@link requireAdmin}. Backs the `/admin/messages` page (issue #80): a * read-only list of the contact-form messages users have sent. No write * routes — the first version has no triage workflow. */ export const adminContactRouter = Router(); adminContactRouter.get( "/", requireAdmin, wrapAsyncHandler(async (req, res) => { res .status(200) .json(await listContactMessages(listContactMessagesQuerySchema.parse(req.query))); }), );